为了不迭代无限循环,我在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();
}
}
答案 0 :(得分:1)
首先,我会将初始查询更改为用户“"输入要计算的斐波纳契项数,"或类似的东西。
我还会考虑删除while语句并为fibo()递归的基本情况插入if语句。
在fibo()函数中包含while语句会产生问题。不仅在while循环中调用了fibo()函数,而且在内部fibo()返回后,while循环将继续运行。
希望这有帮助。
答案 1 :(得分:0)
你不应该让while
循环和递归。 (看起来它只是继续前进,因为调用通过全局变量共享状态。不要这样做:正如你所看到的,它使调试变得困难。)