不确定 syntax/methods。我相信我的代码应该工作,但它不
Unsure about syntax/methods. I believe my code should work but it does not
提示:给定一个正整数num,return所有小于等于num的斐波那契奇数之和。斐波那契数列中的前两个数字是 1 和 1。序列中的每个附加数字都是前两个数字的总和。斐波那契数列的前六个数字是1、1、2、3、5和8。例如,sumFibs(10)应该return10,因为所有小于或等于10的斐波那契奇数都是1、1 、3 和 5。
我为此写的代码是:
function sumFibs(num) {
const arr = [1,1];
let sum = 0;
for(let i = 2; i <= num; i++){
let queef = arr[i - 1] + arr[i - 2];
arr.push(queef);
}
for(let j = 0; j < arr.length; j++){
if(arr[j] % 2 != 0){
sum += arr[j];
}
}
return sum;
}
console.log(sumFibs(6));
但是当它应该是 10 时我得到了 23,我不确定为什么这不起作用,因为我觉得这会在 java 中起作用。我也尝试过 arr[i] == queef 但这也不起作用。我遗漏了一些东西或者这应该有效吗?
欢迎 Bethany,享受您新的编程之旅。如果您将代码中的第 4 行更改为:
for(let i = 2; i < num; i++){
它returns10
我认为你的错误在于
for(let i = 2; i <= num; i++){
我相信您正在生成直到 num 的数字而不是值本身。试试这样的东西(我试着保持你的风格):
function sumFibs(num) {
if (num === 1) return 1;
const arr = [1,1];
let sum = 2;
for(let i = 2; i <= num; i++){
let queef = arr[i - 1] + arr[i - 2];
arr.push(queef);
if(arr[i] % 2 != 0 && queef < num){
sum += arr[i];
}
}
return sum;
}
console.log(sumFibs(6));
在第一个for循环中应该是< num
。由于数组索引从 0
而不是 1
开始,当您键入 <= 6
时,它会生成一个包含 7 个数字的数组。
提示:给定一个正整数num,return所有小于等于num的斐波那契奇数之和。斐波那契数列中的前两个数字是 1 和 1。序列中的每个附加数字都是前两个数字的总和。斐波那契数列的前六个数字是1、1、2、3、5和8。例如,sumFibs(10)应该return10,因为所有小于或等于10的斐波那契奇数都是1、1 、3 和 5。
我为此写的代码是:
function sumFibs(num) {
const arr = [1,1];
let sum = 0;
for(let i = 2; i <= num; i++){
let queef = arr[i - 1] + arr[i - 2];
arr.push(queef);
}
for(let j = 0; j < arr.length; j++){
if(arr[j] % 2 != 0){
sum += arr[j];
}
}
return sum;
}
console.log(sumFibs(6));
但是当它应该是 10 时我得到了 23,我不确定为什么这不起作用,因为我觉得这会在 java 中起作用。我也尝试过 arr[i] == queef 但这也不起作用。我遗漏了一些东西或者这应该有效吗?
欢迎 Bethany,享受您新的编程之旅。如果您将代码中的第 4 行更改为:
for(let i = 2; i < num; i++){
它returns10
我认为你的错误在于
for(let i = 2; i <= num; i++){
我相信您正在生成直到 num 的数字而不是值本身。试试这样的东西(我试着保持你的风格):
function sumFibs(num) {
if (num === 1) return 1;
const arr = [1,1];
let sum = 2;
for(let i = 2; i <= num; i++){
let queef = arr[i - 1] + arr[i - 2];
arr.push(queef);
if(arr[i] % 2 != 0 && queef < num){
sum += arr[i];
}
}
return sum;
}
console.log(sumFibs(6));
在第一个for循环中应该是< num
。由于数组索引从 0
而不是 1
开始,当您键入 <= 6
时,它会生成一个包含 7 个数字的数组。