题目
从标准输入读入一个正整数 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