![](/img/trans.png)
[英]Iteral fibonacci java code returns 0 when fibonacci sequence > 2
[英]Java code shows wrong Fibonacci number in Fibonacci sequence
我试图制作一个 Java 代码来显示斐波那契数列中的第 n 个数字。 例如,如果我输入 7,代码应该显示数字 8,因为斐波那契数列中的第 7 个数字是 8。
但是当我试图制作一个时,它显示错误的数字。 出于某种原因,当我输入 7 时它显示 13,当我输入 1 时它显示 1,尽管我已经在代码中声明第一个数字是 0。
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 + " ");
我认为代码出于某种原因忽略了我理解的第一个 0。 我想要一些帮助,谢谢。
Spandan 是正确的,如果您将代码修改为以下内容,您将从 1 开始一直得到正确的响应...
笔记:
循环现在仅在 i<n 时迭代,这会删除不需要的结果。
虽然循环永远不会产生序列中的第一个数字(零),因为第一次迭代不能小于一个。 出于这个原因,我在循环第一次运行之前添加了 X 的打印。
我希望这有帮助:)
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of terms: ");
int n = input.nextInt();
int x = 0;
int y = 1;
int a;
System.out.print("Fibonacci sequence: ");
System.out.print(x + " ");
for (int i = 1; i < n; i++) {
a = x + y;
x = y;
y = a;
System.out.print(x + " ");
}
}
}
您必须将 for 条件更改为 i <= n-1 并为第一个术语设置一个单独的条件。 斐波那契数列是 1 1 2 3 5 8 13 但根据您的代码,它是 1 2 3 5 8 13
试试这个
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 + " ");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.