题目

从标准输入读入一个正整数 n,输出斐波那契数列的前 n 项(数列从 1, 1, 2, 3, 5, 8... 开始)。

输入格式:一行输入一个正整数 n。

输出格式:在一行中输出斐波那契数列前 n 项,数字之间以空格分隔,末尾换行。

数据范围与约定:1 ≤ n ≤ 50。

思路与算法

1. 滚动变量优化空间
前两项固定为 1。生成后续项时,只需维护前两项 a 和 b,通过 c = a + b; a = b; b = c; 滚动向前更新,空间复杂度仅为 O(1)。

2. 格式控制与大数
斐波那契数列增长迅速,项值需用 long 存储;输出格式需注意行末无多余空格。

完整程序

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        if (n < 1) {
            return;
        }

        // 滚动变量法:斐波那契数列第 n 项等于前两项之和
        long a = 1, b = 1;
        for (int i = 1; i <= n; i++) {
            if (i <= 2) {
                System.out.print(a);
            } else {
                long c = a + b;
                System.out.print(c);
                a = b;
                b = c;
            }
            if (i < n) {
                System.out.print(" ");
            }
        }
        System.out.println();
    }
}

运行示例

输入:

7

输出:

1 1 2 3 5 8 13