题目:
杨辉三角
输入n(1<n<10), 打印高度为n的杨辉三角
样例输入: 5
样例输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
逻辑如下:
1. 导入`Scanner`类用于输入。
2. 创建`Scanner`对象来读取用户输入的杨辉三角的行数`n`。
3. 初始化一个二维数组`triangle`来存储杨辉三角的值,但是不指定每行的长度,因为在杨辉三角中,每一行的长度是不同的。
4. 使用一个外层循环来遍历每一行,从第0行到第`n-1`行。
5. 在外层循环中,为当前行`i`创建一个长度为`i+1`的一维数组,因为杨辉三角的第`i`行有`i+1`个元素。
6. 设置当前行的第一个和最后一个元素为1,因为杨辉三角的每一行两端都是1。
7. 使用一个内层循环来计算当前行的中间元素,这些元素是它正上方元素和左上方元素之和。正上方元素是`triangle[i-1][j]`,左上方元素是`triangle[i-1][j-1]`。
8. 内层循环完成后,当前行的所有元素就计算完毕了。
9. 当所有行都计算完毕后,使用两个嵌套循环来打印杨辉三角。内层循环遍历每一行的元素,外层循环负责换行。
10. 每打印完一行元素后,通过`System.out.println()`进行换行,以便下一行的元素从新的一行开始打印。
整个程序的逻辑是先通过输入确定杨辉三角的大小,然后通过两层循环计算并存储每一行的元素值,最后再通过两层循环将计算出的杨辉三角打印出来。
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入正整数n(1<n<10): ");
int n = scanner.nextInt();
// 创建一个二维数组来存储杨辉三角的值
int[][] triangle = new int[n][];
// 填充杨辉三角
for (int i = 0; i < n; i++) {
triangle[i] = new int[i + 1]; // 每一行的长度比行号大1
triangle[i][0] = 1; // 每一行的第一个数是1
triangle[i][i] = 1; // 每一行的最后一个数是1
// 计算中间的数,它是它上方和上方左侧数的和
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
// 打印杨辉三角
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(triangle[i][j] + " ");
}
System.out.println(); // 每打印完一行后换行
}
}
}