LoginSignup
0
0

More than 5 years have passed since last update.

js フィボナッチ数列の奇数を合計する

Last updated at Posted at 2017-01-07

お題

与えられた引数(正の数)と同じかそれ以下のフィボナッチ数列の奇数を合計する。
フィボナッチ数 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);

他にもコードが浮かんだ方、コメントお待ちしております。

0
0
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0