2017-12-06 5 views
0

フィブリッド番号の生成についてこの質問がありました。私が見たfib数の再帰的実装は、fib(n)= fib(n-1)+ fib(n-2)のように常に上から前になりましたが、この質問はfib(n-1)、fib n-2)が存在すると仮定する。次のフィボナッチ数を生成

public class Fibonacci { 
    int[] fiboNums; 

    public Fibonacci(int n) { 
     // TODO: generate the first n fibonacci numbers 
    } 

    private void generateNextFibo(int n, int lastFibo, int lastLastFibo) { 
     // TODO: Implement this recursive function to compute next 
     // fibonacci number. 
    } 

    public int[] getAll() { 
     return fiboNums; 
    } 
} 
+1

なぜあなたはすでにあまりにも答えを知っている質問を求めている...それらに答えるために質問をする –

+2

@RAZ_Muh_Tazは完全に罰金です。 –

+1

@RAZ_Muh_Tazこれまでに、あなたは今までに質問を作成しましたか?もしあなたが気付いたら、下にあるチェックボックスがあります。これは、あなたがyrの質問に答えることができることを示しています。 –

答えて

3

最初のトリッキーな部分は、params generateNextFiboを呼び出す必要があります。 2番目の部分はgenerateNextFiboメソッドの終了条件です。

public class Fibonacci { 
    int fiboNums[]; 

    public Fibonacci(int n) { 
     // generate the first n fibonacci numbers 
     fiboNums = new int[n]; 
     fiboNums[0] = 1; 
     fiboNums[1] = 1; 

     // Start from 3 since the first two fibo numbers are given 
     if (n >= 3) 
      generateNextFibo(3, fiboNums[1], fiboNums[0]); 
    } 

    private void generateNextFibo(int n, int lastFibo, int lastLastFibo) { 
     // Implement this recursive function to compute next fibo number. 
     fiboNums[n - 1] = lastFibo + lastLastFibo; 
     if (fiboNums.length > n) { 
      lastLastFibo = lastFibo; 
      lastFibo = fiboNums[n - 1]; 
      generateNextFibo(n + 1, lastFibo, lastLastFibo); 
     } 
    } 

    public int[] getAll() { 
     return fiboNums; 
    } 
} 
+0

[doc comments](http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#styleguide)があれば、読者は仕様がどれだけ満たされているかを確認してください。 – greybeard

+0

@greybeard擬似コードまたはレガシーコードと見なしてください。任意の新しいソリューションuは思い付くことができますか? :) –

+0

'すべての新しい解決策[グレイビア]が出てくるのですか?いいえ。グレイビアードは知っている*すべて* – greybeard

関連する問題