JAVA一维数组实现杨辉三角

题目:用JAVA实现如下形式(杨辉三角)


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

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/zhangfox1990/article/details/50280941
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞