【发布时间】:2019-04-05 14:34:21
【问题描述】:
我试图找到斐波那契数列中包含超过 1000 位数字的第一个数字。
给定一个数字 n(例如 4),我找到了一种方法来找到第一个具有 n 位数字的数字在斐波那契数列中的位置,以及一种方法来找到给定它在数列中的位置的数字。
例如,您需要知道斐波那契数列中的第一个 4 位数字以及它在数列中的位置。我的代码会这样工作:
var phi = (1+Math.sqrt(5))/2;
var nDigits = 4;
var fEntry = Math.ceil(2 + Math.log(Math.pow(10, nDigits-
1))/Math.log(phi));
var fNumber = 2 * Math.pow(phi, fEntry);
console.log(fEntry);
console.log(fNumber);
在控制台中,您会看到 fEntry(即数字在斐波那契数列中的位置)和 fNumber(您要查找的数字)。例如,如果您要查找第一个 4 位数字及其在序列中的位置,您将在第 17 位得到数字 1597,这是正确的。
到目前为止一切顺利。
当我想找到大数字时会出现问题。我需要在斐波那契数列中找到第一个具有 1000 位数字的数字,但是当我编写 nDigits = 1000 并运行代码时,控制台会为 fEntry 和 fNumber 显示“Infinity”。我猜原因是我的代码涉及的计算数字高于 Javascript 可以处理的数字。
我怎样才能找到那个数字并避免 Infinity?
【问题讨论】:
标签: javascript math fibonacci infinity