フィボナッチ数列アルゴリズム最適化
2715 ワード
フィボナッチアルゴリズムの問題をして、結果は実行がタイムアウトしました.
文章を見つけましたhttp://blog.csdn.net/sloder/article/details/8624373
提供される考え方に従います.
計算結果アイテムの前の各アイテムの値を保存し、各アイテムの計算はFibonacciメソッドを1回だけ呼び出します.
実際にFibonacciメソッドを呼び出す回数はn−1回のみであり,n=33の場合,Fibonacciメソッドを呼び出す回数は32回のみである.
最適化されたコードは次のとおりです.
public class Solution {
public int Fibonacci(int n) {
if(n == 0){
return 0;
}
if(n == 1){
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
文章を見つけましたhttp://blog.csdn.net/sloder/article/details/8624373
提供される考え方に従います.
計算結果アイテムの前の各アイテムの値を保存し、各アイテムの計算はFibonacciメソッドを1回だけ呼び出します.
実際にFibonacciメソッドを呼び出す回数はn−1回のみであり,n=33の場合,Fibonacciメソッドを呼び出す回数は32回のみである.
最適化されたコードは次のとおりです.
1 public class Solution {
2 public int Fibonacci(int n) {
3 if (n == 0) {
4 return 0;
5 }
6 if (n == 1) {
7 return 1;
8 }
9 int[] array = new int[n+1];
10 array[0] = 0;
11 array[1] = 1;
12 for (int i = 2; i < n+1; i++) {
13 array[i] = array[i - 1] + array[i - 2];
14 }
15 return array[n];
16 }
17 }