打印出以下的杨辉三角形 (要求打印出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
. . . . .
. . . . . .
public static void main(String[] args) { printYanghuiTriangle(10); } private static void printYanghuiTriangle(int n) { int row = 2; int col = 0; int[][] arr = new int[n][n]; arr[0][0] = 1; arr[1][0] = 1; arr[1][1] = 1; for (int i = 2; i < n; i++) { while (col < n) { if (col == 0 || col == row) { arr[row][col] = 1; } else { arr[row][col] = arr[row - 1][col] + arr[row - 1][col - 1]; } col++; } row++; col=0; } System.out.println("打印"+n+"行杨辉三角形为:"); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { if (arr[i][j] != 0) { System.out.print(arr[i][j] + "\t"); } } System.out.println(); } }
public static void main(String[] args) { YanghuiSanjiao(10); } public static void YanghuiSanjiao(int m ) { /** * 这道题我采用了高中的二项分布的方式来进一步 * 得出这样的方法 * 如果想要知道这个是怎么来的,具体请看 * https://blog.csdn.net/weixin_49185464/article/details/123491182?spm=1001.2014.3001.5502 */ int[][] arr = new int[m][m]; for(int i=0;i<m;i++) { int cur = 1; for(int j=0;j<=i;j++){ arr[i][j]= cur; cur = cur * (i-j)/(j+1); //arr[i][j]=cur; } } for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { if (arr[i][j] != 0) { System.out.print(arr[i][j] + "\t"); } } System.out.println(); } }
(1) 各行第一个数都是1;
(2) 各行最后一个数都是1;