2017-02-17 10 views
-1
public class Fibonacci2 { 

static int fib(int n) { 
    if(n==1 || n==2) { 
    return(1); 
    } 
    return fib((n-1)+fib(n-2)); 
} 

// Stackoverflow error // 
public static void main(String[] args) { 
    int i, n = 7; 
    for(i=1; i<=n; i++) 
    System.out.println("FIbonaci series" + fib(i)); 
    } 
} 

このプログラムは実行時例外(stackoverflow)に苦しんでいます。どう対処するか教えてください。再帰エラーを使用したFIbonacciシリーズ?

答えて

4

は、あなたのデバッガでコードをステップ、あなたは

return fib((n-1)+fib(n-2)); 

はあなたが持っているものとして

return fib(n-1) + fib(n-2); 

はすぐに非常に作成

return fib(fib(n-2)); 

のようなものであるべきであることがわかります高レベルの再帰。

1

fib((n-1)+fib(n-2))fib(n-1)+fib(n-2)に置き換えます。

関連する問題