1 /*33 【程序 33 杨辉三角】 2 题目:打印出杨辉三角形(要求打印出 10 行如下图) 3 程序分析: 4 1 5 1 1 6 1 2 1 7 1 3 3 1 8 1 4 6 4 1 9 1 5 10 10 5 1 10 */ 11 12 /*分析: 13 * ====================== 14 * 杨辉三角特点: 15 * 1.每个数等于它上方两数之和。 16 * 2.每行数字左右对称,由1开始逐渐变大。 17 * 3.第n行的数字有n项。 18 * ======================= 19 ==================================规律===规律====规律================================== 20 * 经过观察发现: 21 1 22 1 1 23 1 2 1 24 1 3 3 1 25 1 4 6 4 1 26 1 5 10 10 5 1 27 第一行a1[0]=1 28 第二行a2[0]=1,a2[1]=1; 29 第三行a3[0]=1,a3[1]=a2[0]+a2[1],a3[2]=1; 30 第四行a4[0]=1,a4[1]=a3[0]+a3[1],a4[2]=a3[1]+a3[2],a4[3]=1; 31 .... 32 第n行an[0]=1,an[1]=a(n-1)[0]+a(n-1)[1],an[2]=a(n-1)[1]+a(n-1)[2],an[3]=a(n-1)[2]+a(n-1)[3]... 33 ...an[n-2]=a(n-1)[n-3]+a(n-1)[n-2],an[n-1]=1; 34 35 考虑用for循环输出10行!还有一个for循环来改变数组的值 36 直接用二维数组输出!!!!!!! 37 * ==========输出规律========= 38 * 每行的第一个数字前面有n-i个空格,即第一数字输出之前要输出n-i个空格 39 * 没输出一个数字,再输出一个空格 40 * 41 */ 42 43 package homework; 44 45 public class _33 { 46 47 public static void main(String[] args) { 48 // 声明一个10行10列的二维数组 49 int n = 10; 50 int[][] a = new int[n][n]; // 10行10列数组 51 //第一次循环控制行数 52 for (int i = 0; i < n; i++) { 53 //第二层循环控制列数 54 for (int j = 0; j <= i; j++) { 55 //每行的第一列值都为1,每行要输出的最后一个数(即行数等于列数时)也为1 56 if (j == 0 || j == i) { 57 a[i][j] = 1; 58 } 59 //其余情况的值都等于它上方两数之和 60 else { 61 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 62 } 63 // System.out.printf("%d\t",a[i][j]); //输出值 64 } 65 // System.out.println(); //换行 66 } 67 68 // 使输出的结果为等腰三角形,两层for循环 69 // 第一层控制行输出 70 for (int i = 0; i < n; i++) { 71 //第二层的第一部分控制输出空格 72 for (int j = 0; j <= n-i; j++) { 73 System.out.print(" "); 74 } 75 //第二层的第二部分控制输出数组值+“ ” 76 for (int k = 0; k <= i; k++) { 77 System.out.print(a[i][k] + " "); 78 } 79 System.out.println(); //换行 80 } 81 82 } 83 }
原文地址:https://www.cnblogs.com/scwyqin/p/12333622.html
时间: 2024-10-29 02:52:54