使用二维数组打印一个 10 行杨辉三角。
逻辑:
1.第一行有 1 个元素, 第 n 行有 n 个元素
2.每一行的第一个元素和最后一个元素都是 1
3.从第三行开始, 对于非第一个元素和最后一个元素的元素。即:
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
public static void main(String[] args) {
//1.声明并初始化二维数组
int[][] yanghui = new int[10][];
//2.给数组的元素赋值
for (int i = 0; i <= yanghui.length - 1; i++) {
yanghui[i] = new int[i + 1];
//2.1 给首末元素赋值
yanghui[i][0] = yanghui[i][i] = 1;
//2.2 给每行的非首末元素赋值
//if (i >= 2) {
for (int j = 1; j <= yanghui[i].length - 2; j++) {
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
}
}
//}
//3.遍历二维数组,输出等腰三角形的杨辉三角
for (int i = 0; i < yanghui.length; i++) {
if (i != yanghui.length - 1) { //最后一行不需要空出格子
// 第一行空出 (6/2)*9个格子,第二行空出 (6/2)*8个格子,以此类推...
System.out.printf("%" + (3 * ((yanghui.length - 1) - i)) + "s", "");
}
// 空出格子后,再输出内容
for (int j = 0; j < yanghui[i].length; j++) {
//每次输出的内容都占用6个格子
System.out.printf("%-6s", yanghui[i][j]);
}
System.out.println();
}
}