算法学习——递推之杨辉三角
算法描述
杨辉三角
算法思路
-
将杨辉三角看成一个二维数组,开头和末尾都为1
-
第一行和第二行已经被前面的1给赋值了,所以我们直接从第三行开始赋值,
a[2][1]
开始,因为下标是从0开始的,a[2][1] = a[1][0]+a[1][1]
,也就是等于2,依次递推下去 -
打印(for循环),每打印出一行则换一行,
System.out.println
我的打印处理没有处理好,如果数组有两位数,打印出来就不是很美观
算法实现
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] a = new int [n][n];
//初始化条件,头部和尾部都是为1
for(int i=0;i<n;i++){
a[i][0]=1;
a[i][i]=1;
}
//第3行开始,下标为2
for(int i=2;i<n;i++){
//列从第二个开始,到倒数第二个,下标为1到n-1
for(int j=1;j<n-1;j++){
a[i][j] = a[i-1][j-1]+a[i-1][j];
}
}
for(int i=0;i<n;i++){
//画开头空格
for(int m=n-i-1;m>0;m--){
System.out.print(" ");
}
for(int j=0;j<=i;j++){
System.out.print(a[i][j]+" ");
}
System.out.println(""); //一行结束换行
}