真正的斐波那契数的索引

汉莱特座位

我需要在斐波那契数列内使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章