我是Java语言的新手,我试图编写一个返回斐波那契数列的小函数。这是我的代码:
function fib2(n) {
let fib = [];
fib[0] = 1;
fib[1] = 1;
for (var i = 2; i < n; i++) {
fib[i] = fib[i - 2] + fib[i - 1];
}
return fib[i];
}
console.log(fib2(6));
,但结果不确定。我想这是因为某些关闭问题,但我不确定原因。有人可以解释发生了什么吗?谢谢
答案 0 :(得分:1)
function fib2(n) {
let fib = [];
fib[0] = 1;
fib[1] = 1;
for (var i = 2; i < n; i++) {
fib[i] = fib[i-2] + fib[i-1];
}
return fib;
}
console.log(fib2(6));
输出
(6) [1, 1, 2, 3, 5, 8]
此外
如果我是您,我正在尝试更改函数名称和函数中变量的名称以进行区分。
function fib(n) {
let arr = [];
arr[0] = 1;
arr[1] = 1;
for(let i = 2; i < n; i++){
arr[i] = arr[i-2] + arr[i-1];
}
return arr;
}
console.log(fib(6));
如果要获取序列的最后一个元素,
function lastFib(n){
let prev = 1;
let now = 1;
let temp = 0;
for(let i = 2; i < n; i++){
temp = now;
now = prev + now;
prev = temp;
}
return now;
}
console.log(lastFib(6));
答案 1 :(得分:1)
for循环之后,变量i的值为n,因此fib [i]不在数组中。
function fib2(n) {
let fib = [];
fib[0] = 1;
fib[1] = 1;
for (var i = 2; i < n; i++) {
fib[i] = fib[i - 2] + fib[i - 1];
}
return fib[n-1];
}
console.log(fib2(6));