我遇到了问题,我必须编写一个程序(使用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表示数字,则输出应返回MOD
10 ^ 6 + 7(第n个%10 ^ 6 + 7)。
约束输入:整数n(0