java fibonacci系列错误:未获得正确的输出
我正试图用这个程序打印斐波那契数列。我使用了java fibonacci系列错误:未获得正确的输出,java,fibonacci,Java,Fibonacci,我正试图用这个程序打印斐波那契数列。我使用了n=10(要打印的斐波那契数),得到了10多个数字。你能指出我错在哪里吗 import java.util.*; class myprogram{ static int f=0,s=1,sum=0; public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.printf("Enter the
n=10
(要打印的斐波那契数),得到了10多个数字。你能指出我错在哪里吗
import java.util.*;
class myprogram{
static int f=0,s=1,sum=0;
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.printf("Enter the number of numbers you want to print");
int n=sc.nextInt();
System.out.print(f+" "+s);
fib((n-2));
}
static void fib(int count){
while(count!=0)
{
sum=f+s;
System.out.print(" "+sum);
f=s;
s=sum;
count-=1;
fib(count);
}
}
}
输入:
n=10
预期产出:
0 1 1 2 3 5 8 13 21 34
我的输出:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 ...
您的解决方案已经是迭代的,包括
while
循环。但是,您正在使用减少的计数调用fib
,从而大大增加了打印的数字数量
删除递归调用,它将正常工作。代码的作用是: 首字母:
Iteration f s sum
0 0 1 0
fib函数的第一次调用
Iteration f s sum
1 1 1 1
2 1 2 2
3 2 3 3
4 3 5 5
5 5 8 8
6 8 13 13
7 13 21 21
8 21 34 34
你的程序应该根据你想要的停在这里。但是,通过在函数末尾添加fib(count),可以一次又一次递归地调用fib函数。这就是为什么它会继续下去。它将使7(9-2)+6+5+4+3+2=27次迭代 去除fib(计数);从fib(int count)方法的末尾开始,这是一个巨大的错误。谢谢你指出。当我使用递归时,我用if(count>0)替换了
while(count!=0)
。