在while循环中使用递归函数即使递减计数值也会进入无限循环

时间:2017-10-07 03:04:50

标签: java recursion while-loop

为了不迭代无限循环,我在while内部递减count变量,即使它在使用递归函数时会进入无限循环。

public class RFibonocci{
    static int n1=0,n2=1,count;
    public RFibonocci(){
        System.out.println("Enter the fibo series:");
        Scanner scr=new Scanner(System.in);
        count=scr.nextInt();
        System.out.println("Series is:");
        System.out.println(n1+"\n"+n2);
        fibo(count-2);
    }
    public static void fibo(int count){
        while(count>0){
            int n3=n1+n2;
            System.out.println(n3);
            n1=n2;
            n2=n3;
            count-=1;
            fibo(count);
        }
    }
    public static void main(String...args){
        new RFibonocci();
    }
}

2 个答案:

答案 0 :(得分:1)

首先,我会将初始查询更改为用户“"输入要计算的斐波纳契项数,"或类似的东西。

我还会考虑删除while语句并为fibo()递归的基本情况插入if语句。

在fibo()函数中包含while语句会产生问题。不仅在while循环中调用了fibo()函数,而且在内部fibo()返回后,while循环将继续运行。

希望这有帮助。

答案 1 :(得分:0)

你不应该让while循环递归。 (看起来它只是继续前进,因为调用通过全局变量共享状态。不要这样做:正如你所看到的,它使调试变得困难。)