You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java斐波那契数列代码输出错误问题求助

问题分析与修复

你的代码问题出在循环执行的次数上,和你对斐波那契数列项数的定义不匹配:

你定义的数列是:第1项=0,第2项=1,第3项=1,第4项=2,...,第7项=8。但当前的循环从i=1到i<=n会执行n次,相当于把数列往后多推了一项:

  • 输入1时,循环执行1次,最终输出的是你定义的第2项1
  • 输入7时,循环执行7次,最终输出的是你定义的第8项13

修复方案1:调整循环终止条件

把循环条件从i <= n改成i < n,让循环执行n-1次,刚好对应到你要的第n项:

Scanner input = new Scanner(System.in);
System.out.print("In: ");
int n = input.nextInt();

int x = 0;
int y = 1;
int a;

for (int i = 1; i < n; i++) { // 修改循环终止条件
  a = x + y;
  x = y;
  y = a;
}
System.out.print(x + " ");

验证:

  • 输入1:循环不执行,直接输出x=0(符合预期)
  • 输入7:循环执行6次,最终x=8(符合预期)

修复方案2:调整循环起始值(逻辑更直观)

如果觉得循环次数不好理解,可以单独处理n=1的情况,然后从第2项开始迭代,每一次循环对应计算下一项:

Scanner input = new Scanner(System.in);
System.out.print("In: ");
int n = input.nextInt();

if (n == 1) {
    System.out.println(0);
    return;
}

int x = 0;
int y = 1;
int a;

for (int i = 2; i <= n; i++) { // 从第2项开始计算
  a = x + y;
  x = y;
  y = a;
}
System.out.print(x + " ");

这个方案的逻辑更贴合项数的定义,不容易出错。

内容的提问来源于stack exchange,提问作者Johannes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:01:34