java fibonacci系列错误:没有得到正确的输出

时间:2015-11-05 17:28:31

标签: 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 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 ...

2 个答案:

答案 0 :(得分:3)

您的解决方案已经迭代,包括while循环。但是,您使用减少的计数调用fib,大大增加了打印的数字。

删除递归调用,它会正常工作。

答案 1 :(得分:0)

您的代码正在做什么:

初​​始:

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次迭代。