一 题目
题目:打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…………
二 思路
- 先打印层数,在打印空格数,这时发现 第i层空格数=总层数-i-1(i从0开始)。
- 在打印数据,不着急把里面的值打印出来,先用1代替;
- 观察这个有由1组成的图形发现,它是由一个下三角矩阵变化而来的,所以在Java中我们使用一个二维数组来存取数据。
- 再看杨辉三角的规律,从第三层开始,跳过第一列,第2列的值等于,上一层第1,2列的值相加,下面的依次类推。
三 代码实现
public static void main(String[] args) {
int layers = 10;
int[][] arr = new int[layers][layers];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <= i; j++) {
arr[i][j] = 1;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(Arrays.toString(arr[i]));
}
// 打印层数
for (int i = 0; i < layers; i++) {
// 打印空格数 = 层-1-i
for (int j = 0; j < layers-i-1; j++) {
System.out.print("\t");
}
// 打印数字数=层数
for (int j = 0; j <= i; j++) {
// 计算数字值
if (i > 1 && j < i) {// 从3行开始才修改值,
// 跳过每一行和第一列下标为0的值(i>0) 跳过每一行小标为i的值(j<i)
arr[i][j+1] = arr[i-1][j]+arr[i-1][j+1];
// 第i行,j+1列的值 = 第i-1行j列 + 第i-1行j+1列的值
}
System.out.print(arr[i][j]+"\t\t");
}
// 换行
System.out.println();
}
}
}