我需要产生一个更加不同的Fibonacci序列实现。这是实现
(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);
现在我的任务是"从60000000元素&#34开始,获得10个改进的Fibonacci数字;
如果我通过斐波那契(60000000);这会崩溃。
答案 0 :(得分:1)
<强>更新强>
尝试以下一项。
参数: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]