打印杨辉三角

杨辉三角
是我国南宋数学家杨辉在1261年发现的,详细记载于与其所著的《详解九章算法》

特征

  1. 第n行的数字有n项
  2. 每行数字左右对称,由1开始逐渐变大
  3. 每个数等于它上方两数之和

    如下所示排列:
            1
           1 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. 定义一个二维数组,array[n][ ];
  2. 为每行申请元素,第n行的数字有n项;
  3. 为每行的第一个列和最后一列赋值为1;
  4. 因为第一、二行是固定的,接下来为从第三行开始的其他列赋值,由上面的排列方式可以得出规律:第i行j列的数字为上面一行j-1列的数字与j列的和;array[i][j]=array[i-1][j-1]+array[i-1][j];
  5. 输出杨辉三角;

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.Scanner;
public class {
public void yhTriangle() {
Scanner in = new Scanner(System.in);
System.out.print("输入杨辉三角的阶梯数:");
int n = in.nextInt();
int[][] array = new int[n][];
for (int i = 0; i < array.length; i++) {
array[i] = new int[i + 1];
}
// 将1复制给每行的第一列和最后一列
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][0] = 1;// 为每行的第一列赋值为1
array[i][i] = 1;// 为每行的最后一列赋值为1
}
}
// 为从第3行开始的中间的元素赋值
for (int i = 2; i < array.length; i++) {
for (int j = 1; j < i; j++) {
array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
}
}
// 输出杨辉三角
for (int arr[] : array) {
for (int a : arr) {
System.out.print(a + " ");
}
System.out.println();// 换行
}
}
}

运行结果

输入杨辉三角的阶梯数:7
1
1 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