题目

输出斐波那契数列前 n 项

思路

本题输出斐波那契数列的前 n 项(通常从 1, 1, 2, 3… 开始)。 读入 n 后,先设前两项 a=1, b=1。在循环里打印当前项,再用 c=a+b; a=b; b=c 滚动到下一对;n==1 时只输出一项,需单独分支。

解题分析

输出前 n 项用滚动变量 a、b 更新,比递归重复计算快很多。f1、f2 为 1 的约定与第 52 题单求第 n 项一致。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int n = 7;
        long a = 1, b = 1;
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            if (i <= 2) sb.append(a);
            else {
                long c = a + b;
                sb.append(c);
                a = b;
                b = c;
            }
            if (i < n) sb.append(' ');
        }
        System.out.println(sb);
    }
}

运行示例

输出:

1 1 2 3 5 8 13