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];
}
}
输出的结果是:
打印的方法有很多种:也可以直接用增强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();
}
结果如下: