首页 > 解决方案 > 我怎样才能找到一个大的斐波那契数?

问题描述

我有一个问题,我必须编写一个程序(在 JavaScript 中)来返回第 n 个斐波那契数,当我的输入不是很大时,这个程序工作得很好:

function nthFibConstantTime(n) {
    let phi = (1 + Math.sqrt(5)) / 2;
    return Math.round(Math.pow(phi, n) / Math.sqrt(5));
}
nthFibConstantTime(5) // 5
nthFibConstantTime(9) // 34
nthFibConstantTime(788) // 2.1516692574825388e+164

但是,输入n,例如 n = 1500,程序返回Infinity,这不是我所期望的。

function nthFibConstantTime(n) {
    let phi = (1 + Math.sqrt(5)) / 2;
    return Math.round(Math.pow(phi, n) / Math.sqrt(5));
}
nthFibConstantTime(1500) // Infinity

任何人都可以帮助我用 JavaScript 编写这个程序来返回第 n 个斐波契数,以防输出太大而不能用 JavaScript 中的数字表示,输出应该返回这个结果MOD10^6+7 (n-th % 10^6 + 7)。

约束输入:整数 n (0 < n ≤ 10^15)

标签: javascriptfibonacci

解决方案


推荐阅读