Java代码基础算法练习-求杨辉三角第n行的值-2024.07.27

任务描述:
给定一个非负整数n,生成「杨辉三角」的第n行。(1<=n<=10)在「杨辉三角」中,每 个数是它左上方和右上方的数的和。

(提示,第一列数值为1,如数组下标用i,j表示,i==j时,数值也 为1)。


解决思路:

直接计算第 n 行的杨辉三角的数字


代码示例:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class j240727_3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入行号 n (1 <= n <= 10): ");
        int n = scanner.nextInt();
        printRow(n);
        scanner.close();
    }

    public static void printRow(int rowIndex) {
        List<Integer> row = new ArrayList<>();
        long value = 1;

        // 调整循环次数,因为行号是从1开始的
        for (int i = 0; i <= rowIndex - 1; i++) {
            row.add((int) value); // 添加当前值到列表
            // 根据新的循环次数调整计算公式
            value = value * (rowIndex - i - 1) / (i + 1);
        }

        for (int num : row) {
            System.out.print(num + " ");
        }
    }

}

### 实现杨辉三角并获取第n代码示例 在Java中,可以通过二维数组来实现杨辉三角,并根据输入的数获取对应的数据。杨辉三角的一个重要特性是,每一中的数(除了首尾两个)等于其上一相邻两个的和。利用这一特性,可以逐步构建二维数组并最终获取指定的数据[^4]。 下面是一个完整的代码示例,用于输入数 `n` 并输出杨辉三角的第 `n` : ```java import java.util.Scanner; public class PascalTriangle { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入杨辉三角数 n:"); int n = scanner.nextInt(); // 二维数组存储杨辉三角 int[][] triangle = new int[n][n]; // 构建杨辉三角 for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { if (j == 0 || j == i) { triangle[i][j] = 1; // 首位和末位为1 } else { triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]; // 中间为肩上两数之和 } } } // 输出第n(注意数组从0开始计数) System.out.print("第 " + n + " 的元素为:"); for (int i = 0; i < n; i++) { System.out.print(triangle[n - 1][i] + " "); } } } ``` ### 代码说明: 1. **输入部分**:使用 `Scanner` 读取用户输入的数 `n`。 2. **二维数组初始化**:创建一个大小为 `n x n` 的二维数组 `triangle` 来存储杨辉三角的数据。 3. **构建杨辉三角**: -的第一个和最后一个元素始终为 `1`。 - 中间的元素通过公式 `triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]` 计算。 4. **输出第n**:直接遍历二维数组的第 `n-1` (因为数组索引从0开始),输出该的所有元素。 ### 示例运: 假设用户输入的数 `n = 5`,程序将输出第5杨辉三角元素: ``` 第 5 的元素为:1 4 6 4 1 ``` ### 时间和空间复杂度分析: - **时间复杂度**:构建整个二维数组的时间复杂度为 $O(n^2)$。 - **空间复杂度**:需要一个 $n \times n$ 的二维数组存储数据,因此空间复杂度为 $O(n^2)$。 如果只需要输出第 `n` ,可以优化空间复杂度为 $O(n)$,但此示例保留了完整的二维数组结构以便于理解。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨空集

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值