##お題
与えられた引数(正の数)と同じかそれ以下のフィボナッチ数列の奇数を合計する。
フィボナッチ数 wikipedia
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, …
例 引数10の場合、10が返ってくる。
10以下の奇数のフィボナッチ数は1,1,3,5で合計は10のため
function sumFibs(num) {
//write your code.
}
sumFibs(4);//Fibs[1,1,2,3] sum 5
##出力結果 例
sumFibs(4000000) //4613732
sumFibs(4) //5
sumFibs(75024) //60696
sumFibs(75025) //135721
##つかったもの
push()
reduce()
if文
for文
##考え方
・引数までのフィボナッチ数列を求めて配列に入れる。→奇数を合計して返す
・フィボナッチ数は配列の最後から一番目と二番目を足して配列に追加する処理をfor文で繰り返して取得する
・配列の奇数の合計はreduce()を使ってもとめる。
・奇数はif文の条件に2で割ってあまりが0以外のものと設定してもとめる。
##コード
function sumFibs(num) {
//引数numまでのフィボナッチ数列をもとめる
var arrFib = [0,1];
for (var i = 1; i <=num;) {
arrFib.push(i);
i = arrFib[arrFib.length - 1] + arrFib[arrFib.length - 2];
}
//配列の奇数を合計する
var res = arrFib.reduce(function(prev, curr) {
if (curr%2 !== 0) return prev + curr;
else return prev;
});
return res;
}
sumFibs(4);
###他にもコードが浮かんだ方、コメントお待ちしております。