需求:要打印如图所示的杨辉三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
… …
分析:
看规律:
1、每一行的第一列和最后一列都是1
2、从第三行开始,每一个数据是他上一行的前一列和本列之和
所以,代码如下:
//键盘录入数据
Scanner sc=new Scanner(System.in);
System.out.println("请输入要打印的杨辉三角形的行数");
int line=sc.nextInt();
//定义一个二维数组arr
int[][] arr=new int[line][line];
//给二维数组任何一行的第一列和最后一列赋值1
for(int x=0;x<arr.length;x++){
arr[x][0]=1;
arr[x][x]=1;
}
//从第三行开始,每一个数据是他上一行的前一列和本列之和
for(int x=2;x<arr.length;x++){
//如果写y<=x的话就会取到最后一列的值,前面已经定义过最后一列 位1,并且y也应该从1开始,同理之前第一列也已经定义过值了,这是我之前犯过的一个小错误
for(int y=1;y<=x-1;y++){
arr[x][y]=arr[x-1][y]+arr[x-1][y-1];
}
}
System.out.println("杨辉三角形如下所示:");
//遍历数组
for(int x=0;x<arr.length;x++){
for(int y=0;y<=x;y++){
System.out.print(arr[x][y]+" ");
}
System.out.println();
}
}