java常见逻辑练习题杨辉三角

题目:使用java实现杨辉三角

首先我们要知道杨辉三角是什么,下图就是杨辉三角了
在这里插入图片描述

如图,我们分析可得出杨辉三角的规律:
1、每一行的第一列和最后一列都为数字1
2、从第三行开始,每一行的其他数字为上一行当前位置的数字加上一行前一列的数字和

首先我们创建一个二维数组,并为二维数组内的每一个一位数组开辟空间,即:

第一步

		int[][] arr = new int[13][10];
		for (int i = 0; i < arr.length; i++) {
			//为二维数组内的一维数组重新开辟空间,因为要形成三角形
			//一维数组的空间要等同于二维数组的角标+1
			arr[i] = new int[i+1];
		}

解释:因为要实现三角形的原因,所以每一个一位数组的空间要等同于二维数组的角标+1

由之前得出的杨辉三角的规则来给这个二维数组赋值,即:

第二步

for (int i = 0; i < arr.length; i++) {
			//每一行的第一个和最后一个都为1,所以赋值1
			arr[i][0] = 1;
			arr[i][i] = 1;
			//从第二个开始,是前面行的前一格加前一行的当前格相加的和,所以j=1
			//因为每一行的最后一个为1,所以j < i,j=i得话是最后一个数
			for (int j = 1; j < i; j++) {
				arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
			}
		}

接下来打印即可,所以最终成型的代码为:

最终代码

public class Demo {
	public static void main(String[] args) {
		//1
		//11
		//121
		//1331
		//14641
		//分析,首先每一行的第一个和最后一个都是1
		//从第三行开始,每行第二个往后都是前一行的同位置加前一个位置的和
		int[][] arr = new int[13][10];
		for (int i = 0; i < arr.length; i++) {
			//为二维数组内的一维数组重新开辟空间,因为要形成三角形
			//一维数组的空间要等同于二维数组的角标+1
			arr[i] = new int[i+1];
		}
		for (int i = 0; i < arr.length; i++) {
			//每一行的第一个和最后一个都为1,所以赋值1
			arr[i][0] = 1;
			arr[i][i] = 1;
			//从第二个开始,是前面行的前一格加前一行的当前格相加的和,所以j=1
			//因为每一行的最后一个为1,所以j < i,j=i得话是最后一个数
			for (int j = 1; j < i; j++) {
				arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
			}
		}
		//打印这个二维数组
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
	}
}

在控制台打印结果为:

1	
1	2	1	
1	3	3	1	
1	4	6	4	1	
1	5	10	10	5	1	
1	6	15	20	15	6	1	
1	7	21	35	35	21	7	1	
1	8	28	56	70	56	28	8	1	
1	9	36	84	126	126	84	36	9	1	
1	10	45	120	210	252	210	120	45	10	1	
1	11	55	165	330	462	462	330	165	55	11	1	
1	12	66	220	495	792	924	792	495	220	66	12	1	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值