問題:フィボナッチを見つけます
入力: N
出力: ITEM N Fibonaceiを求めて
アイデア:
再帰/サイクル
コード:
再帰的なコード
int fibo(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
return fibo(n-1)+fibo(n-2);
}
ループコード
class Solution {
public:
int Fibonacci(int n) {
int result[2]={0,1};
if(n<2)
return result[n];
int fibNMinusOne = 1;
int fibNMinusTwo = 0;
int fibN;
for(int i=2;i<=n;i++)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
};
複雑分析:再帰的な符号化複雑O(2 ^ N)であり、空間的複雑度はO(N)である(N-1スタック領域を占めるまで)、O(N)の時間複雑さの巡回符号、空間的複雑それはO(1)です。