我正在通过此Free Code Camp exercise。
返回所有奇数斐波纳契数的总和,直到并包括
如果是斐波那契数,则传递数字。斐波那契数列的前几个数字是1、1、2、3、5和
8,每个后续数字是前两个数字的总和。
这是我到目前为止所拥有的...
有什么建议么?
function sumFibs(num) {
var arr, isFibVal, isEvenVal, sum, i = 0, fibonacci = function (num){
var a, b, result, fibArr = [1];
a=0;
b=1;
result=b;
for(var j = 0; j < num; j++){
result = a + b;
a = b;
b = result;
fibArr.push(result);
}
return fibArr;
},
isFib = function (val){
var prev = 0;
var curr = 1;
while(prev<=val){
if(prev == val){
return true;
} else {
return false;
}
curr = prev + curr;
prev = curr - prev;
}
},
isEven = function(someNumber){
return (someNumber % 2 === 0) ? true : false;
};
function sumArray(array) {
for (
var
index = 0, // The iterator
length = array.length, // Cache the array length
sum = 0; // The total amount
index < length; // The "for"-loop condition
sum += array[index++] // Add number on each iteration
);
return sum;
}
arr = fibonacci(num);
isFibVal = isFib(num);
isEvenVal = isEven(num);
if (isFibVal && !isEvenVal){
sum += sumArray(arr);
}
return sum;
}
我得到的只是
undefined
,这似乎很奇怪,因为我认为代码的这一部分非常酷-使用函数值检查if语句中的vs。 arr = fibonacci(num);
isFibVal = isFib(num);
isEvenVal = isEven(num);
if (isFibVal && !isEvenVal){
sum += sumArray(arr);
}
最佳答案
由于您正在接受FCC认证,因此我不会直接为您提供答案,但我会为您提供一些提示,以帮助您查找:
参见此段:
for(var j = 0; j < num; j++){
result = a + b;
a = b;
b = result;
fibArr.push(result);
}
还有这个:
function sumArray(array) {
for (
var
index = 0, // The iterator
length = array.length, // Cache the array length
sum = 0; // The total amount
index < length; // The "for"-loop condition
sum += array[index++] // Add number on each iteration
);
return sum;
}
另外,您可能根本不需要此段:
isFibVal = isFib(num);
isEvenVal = isEven(num);
if (isFibVal && !isEvenVal){
sum += sumArray(arr);
祝好运。作为完成了大部分课程的人,我可以说Free Code Camp是真正的交易。
关于javascript - 如何获取javaScript中所有奇数斐波那契值的总和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36705648/