题目:用JAVA实现如下形式(杨辉三角)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
思路:杨辉三角的性质是,除收尾两个数字为1以外,其他第n行第m个数字等于上方两个数之和。
网上有很多实现杨辉三角是应用二维数组,本文应用的是一维数组,不一定比二维数组好,但是也是一种实现问题的方法。
刚看到题目首先想到的是应该有两层for循环,第一层实现对行数的控制,第二层实现对每一行里具体数的控制。那么遇到一个问题,每一层循环的时候会用到上一层循环的数据,想到了应用全局变量,在每一次循环结束的时候对全局变量进行赋值,这样下次循环就能用到本次循环的数据。
public class Procedure33 {
public static void main(String[] args) {
int [] up=new int [20];
for(int i=1;i<=10;i++){
int [] a=new int [i];
for(int j=0;j<i;j++){
if(j==0||j==i-1){
a[j]=up[j]=1;
}
//杨辉三角核心的东西,其中up为上一层数据
if(i>=3&&j!=0&&j!=i-1){
a[j]=up[j-1]+up[j];
}
}
//把本次循环数据,放入up中,供下次循环使用
for(int k=0;k<i;k++){
up[k]=a[k];
}
for(int k=0;k<i;k++){
System.out.print(a[k]+" ");
}
System.out.println();
}
}
}
输出结果如下:
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