javascript - 一个非常大的斐波那契数的指数

标签 javascript fibonacci bigint

我需要使用 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/

相关文章:

javascript - jQuery从左到右动画定位问题

javascript - Gravity Forms & ReactJS - 将表单加载到模态并提交

recursion - Clojure 中的递归斐波那契函数

c# - C#中bigint的等价物是什么?

javascript - 复选框的 Jquery 版本更改问题

javascript - 构建对象然后导出它,在 js 中

JAVA:斐波那契递归和非递归函数

c++ - 在C++函数中计算斐波那契并抛出编译时错误

SQL Server POWER 函数

sql - 如何将 bigint 字段格式化为 Postgresql 中的日期?