フィボナッチ数フィボナッチ問題

フィボナッチ数が定義されています

フィボナッチ配列:1,1,2,3,5,8,13,21,34、...

数学では、フィボナッチ数を定義するための再帰的な方法は、次のとおりです。

  • F(0)= 0
  • F(1)= 1
  • F(N)= F(N-1)+ F(N-2)

フィボナッチ係数が前に行われ、得られた2つの数値を追加したい後の言葉で説明するために、フィボナッチ列は、0および1から開始され、最初のいくつかのフィボナッチ数の係数である:0,1 、1,2,3,5,8,13,21,34,55、...特に:0が最初ではありませんが、最初のゼロのアイテム。

再帰的なソリューション

ほとんどのソリューションは、具体的には、以下を達成するために、再帰的なソリューション式に基づいていると思うします

INT FIB(INT N){
     場合(N < 2 リターンN。
    戻り FIB(N- 1)+ FIB(N- 2 );
}

しかし、実際には再帰的な解決策は二回、コンピューティング、FIB(N-2)を繰り返している項目、はるかに多くの時間よりも次数n、以下に示すように指数関数的に成長して、時間の複雑さは、高いです、なぜなら再帰呼び出しスタックのより多くを取りますプログラムのためのスペースは、災害です。インタビューの中での溶液のこの種のように、インタビュアーは確かに満足のいくものではない場合。

 

 オーダーの総和

2つのAとBの開始前に定義の式に従って0と1です。及びcは最初の2つの数字であり、そしてBが動的に右に移動再割り当て後、時間複雑度は、O(N)です。このソリューションは非常に良いです!

int型 FIB(int型のn)
{
    もし(N < 2リターンN。
    int型、A = 0 ;
    INT B = 1 int型、C = 0 ;
    以下のためにINT iが= 1 ; I <N; ++ i)が{
        C = A + B。= B;
        B = C。
    }
    リターンC;
}

 

おすすめ

転載: www.cnblogs.com/evenleee/p/11961234.html
おすすめ