2017-10-07 9 views
-3

無限ループを反復しないようにするために、whileループ内でcount変数を減らしています。再帰関数。whileループでの再帰関数の使用は、カウント値をデクリメントしても無限ループになります

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

無限ではありません。ちょうど非常に非常に非常に長い。 –

+0

ようこそ。何の「数える」値によって無限になるか? – c0der

答えて

0

あなたがwhileループ再帰を持っていることになっていません。 (呼び出しがグローバル変数を介して状態を共有するので、そのまま続行するように見えますが、表示しないと、デバッグが難しくなります)

0

まず、最初のクエリを「フィボナッチ数を入力する」などの方法で入力します。

また、while文を削除し、fibo()再帰のベースケースのif文を挿入することも検討します。

fibo()関数内にwhileステートメントを含めると、問題が発生します。 fibo()関数はwhileループ内で呼び出されるだけでなく、whileループは内部fibo()が復帰した後も引き続き実行されます。

これが役に立ちます。

関連する問題