我需要使用 JavaScript 在斐波那契数列中计算斐波那契数列的索引。我需要在不使用递归或循环的情况下执行此操作。我找到了以下公式 in the Math forum :
n=⌊logφ(F⋅5√+12)⌋
并用 JavaScript 编码:
function fibIndex(fib)
{
fib = BigNumber(fib);
return logBasePhi(fib.times(Math.sqrt(5)).plus((1/2)));
}
function phi()
{
return (1 + Math.sqrt(5))/ 2;
}
function getBaseLog(x, y) {
return Math.log(y) / Math.log(x);
}
function logBasePhi(x)
{
return getBaseLog(phi(), x);
}
注意 .times()
和 .plus()
函数是 this BigNumber Library 的一部分到目前为止,这非常有用。这工作正常,直到我要为其找到索引的斐波那契数非常大。
问题:
我需要一种不同的方法来计算如此大的数字的对数。如果我有一个非常大的数字,例如 2000 的斐波那契数列,出于显而易见的原因,我会得到 Infinity
。库本身没有任何计算日志的方法,我也写不出这个函数。
我从来没有想过任何具有如此小底数 (phi) 的数字的对数可以大于 JavaScript 整数的最大值。你们能指出我正确的方向吗?我是否应该只保留它获取小于 Fib(1500) 的数字的索引并称之为好?
最佳答案
您可以使用 BigInteger。您可以在此处查看如何使用它的示例:http://reallifejs.com/the-meat/calculators/big-number-calculator/
关于javascript - 一个非常大的斐波那契数的指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174449/