我正在通過這個工作Free Code Camp exercise。如何獲得javaScript中所有奇數斐波那契數的總和?
如果是斐波納契數,則返回所有奇數斐波那契數的總和,並且包括 通過的數。斐波納契數列的前幾個數字是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語句相當使用冷。
arr = fibonacci(num);
isFibVal = isFib(num);
isEvenVal = isEven(num);
if (isFibVal && !isEvenVal){
sum += sumArray(arr);
}
感謝你的洞察力,所以前兩個是沒有必要?我知道你說三分之三的最後可能根本不需要。 至於Free Code Camp,我最近很受鼓舞。起初,我無法突破許多算法挑戰,但是到最近我一直在連勝,我一直在通過它們。 –
前兩個段需要編輯邏輯。就我而言,第三個是沒有必要的。您可以將第三部分的邏輯實現爲前兩部分,也許可以用一個班輪替換該部分。 FCC是好的。請記住,完成初學者有點難。對於一個完全陌生的人,我建議先開始[codecademy](https://codecademy.com)。 – timolawl
謝謝,我會繼續努力的。 :) 我已經通過codecademy,和類似的(琳達,codeschool等)我的問題一直是實踐。就像學習一門口語一樣,你必須開始鑽研所有的結構,這將有助於傳達你的想法。因爲我一直這樣做 - 實際上打字的東西已經改變了...... –