/**
* 数字三角
* 当 n == 7 时输出如下内容
* 1
* 2 2 2
* 3 3 3 3 3
* 4 4 4 4 4 4 4
* 5 5 5 5 5 5 5 5 5
* 6 6 6 6 6 6 6 6 6 6 6
* 7 7 7 7 7 7 7 7 7 7 7 7 7
* @param n
*/
public static void printTriangle(int n){
// 1. 校验参数
if (n < 1){
throw new IllegalArgumentException("n 必须大于 0");
}
// 2. 输出数字三角
for (int i=0; i<n; i++){
int level = i+1;
// 输出空格
for (int j=0; j<n-level; j++){
System.out.print(" ");
}
// 输出数字
for (int j=0; j<1 + 2*i; j++){
System.out.print(level + " ");
}
// 换行
System.out.println();
}
}
/**
* 杨辉三角
* 当 n == 7 时输出如下内容
* 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
* @param n
*/
public static void printYanghuiTriangle(int n){
// 1. 校验参数
if (n < 1){
throw new IllegalArgumentException("n 必须大于 0");
}
// 2. 初始化
int[][] data = new int[n][];
for (int i=0; i<n; i++){
data[i] = new int[i+1];
}
// 3. 赋值
for (int i=0; i<n; i++){
for (int j=0; j<= i; j++){
if (j==0 || j==i){
data[i][j] = 1;
} else {
data[i][j] = data[i-1][j-1] + data[i-1][j];
}
}
}
// 4. 输出
for (int i=0; i<n; i++){
int level = i+1;
for (int j=0; j<n-level; j++){
System.out.print(" ");
}
for (int j=0; j<level; j++){
System.out.print(data[i][j] + " ");
}
System.out.println();
}
}