2014-03-13 46 views
-6

我需要產生更多不同的斐波那契數列實現。這裏是執行Custom/Modified'Fibonacci'Number sequence

(FSM) - FSM(0) = 0, 
FSM(1) = 1, 
FSM(n) = FSM(n - 2) + FSM(n - 1)/n 

如何在javascript中實現此目的?我應該輸入一個大的int 60000000並獲得序列中的下10個數字。

請注意,方程的(n-1)部分有一個/ n。

我當前的代碼如下所示:

var fibonacci = (function() { 
     var memo = {}; 


      function f(n) { 
      var value; 


      if (n in memo) { 
       value = memo[n]; 
      } else { 
       if (n === 0 || n === 1) 
       value = n; 
       else    
       value = f(n - 1)/n + f(n - 2); 
       memo[n] = value; 
      } 
      console.log(value); 
      return value; 
      } 


      return f; 
     })(); 
fibonacci(10); 

現在我的任務說:「讓10以下,從6000元開始修改Fibonacci數」

如果我通過斐波納契(6000);這將會崩潰。

+3

你有任何JavaScript知識呢?你有沒有做過任何嘗試? – GolezTrol

+0

是的,我願意。我對JavaScript上的整個斐波那契原理是新的,大多數在線教程都假設你想要一個從0,1開始的序列。我可以實施。我需要有人向我展示如何從(x) – user3417202

+0

開始請參閱http://nayuki.eigenstate.org/page/fast-fibonacci-algorithms – user1929959

回答

1

UPDATE:

嘗試以下操作之一。 參數:n從哪裏開始儲蓄數字,m多少個號碼你想保存

function getFibonacci(n,m) { 
    var a = 0, b = 1, z = null, arr = [], c = 0; 

    for (var i = 0; i <= n; i++) { 
     if (a >= n) { 
      if (c >= m) { 
       return arr; 
      } 
      arr.push(a); 
      c++; 
     } 
     z = a + b; 
     a = b; 
     b = z; 
    } 
} 

getFibonacci(60000000,10); // [63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976] 

DEMO

+0

感謝您的代碼示例。 幾個查詢: 如何獲得下一個序列? '[6000,*,*,*]'? 我的代碼也有一個分操作數。我沒有看到你的代碼。 – user3417202

+0

@ user3417202在這麼大的數字中,你不能使用JavaScript來處理斐波那契數列問題 – tnanoba

+0

@ user3417202我無法猜出你的意思。你看過DEMO嗎?如果你只指定'n',你將得到基於數字的布爾值(真/假),如果你也輸入了第二個參數,你將得到所有斐波那契數字從'0'到'n' – tnanoba