目录
一、程序运行截图
二、原理
1、总体理解
杨辉三角可以看作一个特殊的二维数组,每个元素之间有联系,而该形态的特殊在于打印的时候的空格规律,而不在于二维数组的值
2、初始化阶段
(1)n表示最后展现的层数
(2)char定义cor为空格,为后续打印规律做准备
(3)sum表示每一行cor的个数,已经初始化为(n-1)*2,但可根据循环改变
(4)初始化二维数组
3、赋值阶段
(1)首先把金字塔外圈包裹的值全部赋值为1,显而易见有
yanghui[i][0] = 1;
yanghui[i][i] = 1;
(2)在更深层次的内部金字塔中,总存在下一行元素等于上一行两元素之和(注意数组的范围),则有
yanghui[i+1][j+1] = yanghui[i][j]+yanghui[i][j+1];
4、打印阶段
(1)每一行在杨辉三角的数组出现前,需要打印符合规律的空格
(2)打印杨辉三角数组
(3)每一层循环结束后换行,但最后一层不换行
三、代码
import java.util.Scanner;
public class yangHui {
public static void main(String[] args) {
//初始化阶段
Scanner in = new Scanner(System.in);
int n = in.nextInt()+1;
in.close();
char cor = ' ';
int sum = (n-1)*2;
int [][] yanghui = new int [n][n];
//赋值阶段
for(int i = 0;i<n;i++){
yanghui[i][0] = 1;
yanghui[i][i] = 1;
}
for(int i = 1;i<n-1;i++){
for(int j = 0;j<i;j++){
yanghui[i+1][j+1] = yanghui[i][j]+yanghui[i][j+1];
}
}
//打印阶段
for(int i = 0;i<n;i++){
for(int x=0;x<sum-i*2;x++)
{
System.out.print(cor);
}
for(int j = 0 ;j<=i;j++){
System.out.printf("%4d",yanghui[i][j]);
}
if(i!=n-1)
System.out.println();
}
}
}