关于杨辉三角的分析思路还有整体的代码实现

1.杨辉三角是一个很有研究性的课题

2.要知道杨辉三角 的写法,首先要分析杨辉三角的规律

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

第二行的有2个数,且都为1

第三行有3个数,第一个和最后一个都为1,第二个数等于第二行的第一个加第二个数的和

第四行有4个数,第一个和最后一个也为1,第2个数等于第3行的第1个加第2个数的和,

第3个数等于第3行的第2个加第3个数.

第五行有5个数,第一个和最后一个都是为1的,规律也是和第四行一样的            

3.通过分析我们可以把杨辉三角拆解成行和列:这个时候就可以用二维数组来实现了

二维数组就是数组中还有一个一位数组:

我们可以看成下面这个样子

定义的方式:int[ ][ ] arr={{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  }}


通过分析我们可以得出杨辉三角的一个规律:

                第n行就有n个数,第一个和第n个数都是为1的,如果我们用i表示行数;j表示列数

                arr[i][j]=arr[i-1][j]+arr[i-1][j-1]

现在就可以写代码了,如下:

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
System.out.println("请输入你要打印的行数");
int n=in.nextInt();
int[][] arr=new int[n+1][n+1];
/**
* 外层循环的是行的
* 内层循环的是行里的长度

*/
for(int i=0;i<=n;i++){
for(int j=0;j<=i;j++){
if(j==0||j==i){ 
arr[i][j]=1;
continue;
}
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}

输出的结果是:

关于杨辉三角的分析思路还有整体的代码实现_第1张图片

打印的方法有很多种:也可以直接用增强for循环来实现:代码如下

/**
* 这是打印的是没有空格的一种方法
* 循环打印出得出的结果 
* 这里用的是增强for循环
*/

for(int[] i:arr){         
for(int j:i){   //i指的是一个数组
if(j==0){
System.out.print("");
}else{
System.out.print(j+" ");
}
/*System.out.print(j==0?"":j+" "); */
}
System.out.println();

}

结果如下:

关于杨辉三角的分析思路还有整体的代码实现_第2张图片

你可能感兴趣的:(关于杨辉三角的分析思路还有整体的代码实现)