Java设计一个程序打印杨辉三角
时间: 2024-10-01 10:02:20 浏览: 27
在Java中,我们可以使用递归或动态规划的方式来设计一个程序来打印杨辉三角。这里是一个简单的动态规划版本的示例:
```java
public class PascalTriangle {
public static void printPascalTriangle(int numRows) {
for (int i = 0; i < numRows; i++) {
// 第一行和最后一行只有一个数
if (i == 0 || i == numRows - 1) {
for (int j = 0; j <= i; j++) {
System.out.print(j + 1);
}
System.out.println();
} else {
for (int j = 0; j < i; j++) {
System.out.print(PascalTriangle.getNumForRow(i, j) + " ");
}
System.out.print(PascalTriangle.getNumForRow(i, i)); // 中间的数字不需要空格
System.out.println();
}
}
}
private static int getNumForRow(int row, int col) {
return Math.min(row, col) >= 0 ? factorial(row) / (factorial(col) * factorial(row - col)) : 0;
}
private static int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * factorial(n - 1);
}
public static void main(String[] args) {
printPascalTriangle(5); // 打印前五行
}
}
```
这个程序首先初始化一个循环,用于迭代每一行。对于每行,如果是第一行或最后一行,就直接打印出从1到行数的所有数字;否则,它会计算并打印每个位置的数字,这个数字是前一列和前两列元素相乘再除以前一列的阶乘。
运行 `printPascalTriangle(5)` 将会打印出前五行的杨辉三角形。
阅读全文