Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java fibonacci系列错误:未获得正确的输出_Java_Fibonacci - Fatal编程技术网

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)