我需要在斐波那契数列内使用JavaScript计算斐波那契数的索引。我需要不使用递归或循环来执行此操作。我在数学论坛中找到了以下公式:
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);
}
请注意,到目前为止,BigNumber库中的.times()
和.plus()
函数都是非常有用的。这很好,直到我要为其找到索引的斐波那契数确实很大。
问题:
我需要一种不同的方法来计算这么大的对数。如果我有一个很大的数字,例如2000年的斐波那契,那我有Infinity
明显的原因。该库本身没有任何计算日志的方法,我也无法编写此函数。
我从来没有想到过,任何具有这么小的基数(phi)的对数都可以大于JavaScript整数的对数。你们能指出我正确的方向吗?我是否应该仅让它获取小于Fib(1500)的数字的索引并称其为好?
您可以使用BigInteger。您可以在此处查看如何使用它的示例:http : //reallifejs.com/the-meat/calculators/big-number-calculator/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句