Java代码显示斐波那契数列中的斐波那契数错误



我试图使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。我需要一些帮助,谢谢你。

span是正确的,如果您将代码修改为以下内容,您将获得从1起的正确响应…

注意:

  1. 循环现在只迭代i<n,这将删除不需要的结果。>

  2. 循环永远不会产生序列中的第一个数字(零),因为第一次迭代不能低于1。因此,我在循环第一次运行之前添加了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 + " ");

最新更新