【发布时间】:2018-03-15 10:23:32
【问题描述】:
我正在尝试解决代码大战中的一个问题。问题如下:
在数学中,斐波那契数列在以下整数序列中,称为斐波那契数列,其特点是其中的每个数字都是前两个数字的和:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 实现函数getFibonacci(n),它将返回斐波那契数列n位置上数字的字符串表示。
我已经制定了我的代码,但是我的代码只有在测试数字很小时才能通过测试,并且在涉及大量数字时所有测试都失败并收到错误消息,例如“预期:'30010821454963453907530667147829489881',而不是得到:'3.001082145496346 e+37'”。 此外,我尝试在我的 return 语句的末尾添加 toNotExponential() 或 expandExponential() 以帮助显示完整的数字,但是,由于我不断收到错误提示“toNotExponential() 不是一个函数,这两个代码都可以工作" 或 " expandExponential() 不是函数"。 不知道怎么办,请帮忙。 我的代码如下...
function getFibonacci(n) {
var arr= [1,1];
var len = arr.length;
while(len<n){
arr.push(arr[len-1]+arr[len-2]);
len++;
}
return (arr[len-1]+"").toNotExponential();
}
【问题讨论】:
-
对于大于 Number.MAX_SAFE_INTEGER
9007199254740991的数字,您需要使用库,或自己编写。有关建议,请参阅Javascript summing large integers。顺便说一句,javascript 中没有int类型,只有数字。 -
您可以将数字存储为字符串,并使用千位作为分隔符,其中数字的长度由字符串的最大可能
.length确定,不使用E-notation,请参阅How do I add 1 to a big integer represented as a string in JavaScript?
标签: javascript arrays numbers int