末尾再帰フィボナッチ数

 

まず、フィボナッチ数

フィボナッチ列は、列1の数、1、2、3、5、8、13、21、34、55、89、144、233,377,610,987,1597,2584,4181,6765を指し、10946,17711,28657,46368 ......

 

第二に、再帰的なアルゴリズム

1.コード

公共 int型 FIB(int型N){
       場合(N == 1 || N == 2 ){
             返す 1 
      } 

      戻り FIB(N-1)+ FIB(N-2 )。
}

2.短所:時間FIB(n)は、複数の低性能、単に例示のための一般的な再帰アルゴリズムを繰り返し計算

 

第三に、改善:時間のためのスペースは、二重カウントすることなく、記憶された計算されたFIB(n)は、空間的複雑度はO(N)

公共 int型 FIB(int型N){
        INT []配列= 新しい INT [N]。
       配列[ 0] = 1 
       配列[ 1] = 1 

       以下のためにint型 I = 2、iがn <; iは++ ){ 
           アレイ[I] =配列[I-1] +配列[I-2 ]。
        } 

       戻り配列[N-1 ]。
}

 

最初の2つの数字と結果の合計から算出された第1の二つの数字:第四に、再び(1)のみを格納番号3スペースOを減らすために、改善されました

公共 int型 FIB(int型N){
        int型第= 1 int型 = 2秒INT = 3第三; 

       以下のためにint型 I = 3; iが++; iが<= N ){  =第一+ 第二; 
           第一 = 二;  = 第三; 
       } 

       戻り三。
}

 

第五に、末尾再帰

公共int型FIB(INT nは、最初のINT、INT秒){ 
      IF(N <= 1){ 
          第返します。
      } 

      rerurn FIB(N-1、第二+第1、第2)。
}

 

 

 

参考:

https://www.cnblogs.com/andy-songwei/p/11707142.html

 

おすすめ

転載: www.cnblogs.com/june0816/p/6265623.html