再帰関数---ケース:最初の100のフィボナッチ数を求めます

// フィボナッチ列11235813213455 ... 
    @の法則:第3の数、最初の二つの数に等しい数から出発し、
    //       getFib(N)= getFib( 1-N-)getFib +(2-N-)
    
    @ 需要:第100 Fibonacei求め

    // 方法
    VARの ARR = []
     関数getFib(N-){
       IF(= N-N - === 1 ||。 2 == ){
         リターン 1。
      } 
      IF (ARR [N-]){
         戻りARR [N-] 
      } { 
        ARR [N-] = getFib(N - 1)getFib +(N - 2 );
         戻りARR [N-] 
      } 
    }
    console.log(getFib( 100)(アウター。)); 


    // 方法二:利用递归
    機能外側(){
       VAR ARR = []
       関数getFib(N){
         場合(N === 1 || N === 2 ){
           リターン 1 
        } 
        であれば(ARR [N]){
           戻りARR [n]を
        } { 
          ARR [N] = getFib(N - 1)+ getFib(N - 2 )。
          戻り[n]はARR 
        } 
      } 
      戻りgetFibと、
    } 
    VARの結果= 
    はconsole.log(結果( 100 ))。


    //方法3:匿名関数呼び出しから===グローバル変数の使用を低減するために最適化された結合最適化閉鎖性能を使用して(保護変数)
    VaRの結果は、=(関数(){
       VARの ARR = []
       関数getFibは、(N){
         IF(N-N - === === 2 || 1 ){
           リターン 1 
        } 
        IF (ARR [N-]){
           戻りARR [N-] 
        } { 
          ARR [N-] = getFibを( 。N - 1)getFib +(N - 2 );
           戻りARRは[N-] 
        } 
      } 
      戻りgetFib。
    })(); 
    console.log(結果( 100))。

 

おすすめ

転載: www.cnblogs.com/lixiaoxue/p/11228587.html