题目:使用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