環境
問題
フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下のとき, 値が偶数の項の総和を求めよ.
考え方
- 3 ~ 400 万までの数字を作る
- 1 と 2 が格納された配列が必要
- 2 つの項を作る
- 前の項 + 現在の項 = 次の項 を作る
- 次の項を配列に格納
- 前の項を現在の項に更新
- 現在の項を次の項に更新
- 3 を現在の項が400万以下まで繰り返す
- 配列の中から偶数の項だけを取り出した配列を作る
- 5 の項を総和を計算する
コード
const question002 = () => { const list: number[] = [1, 2]; let preNumber = 2; let currentNumber = 3; while (currentNumber <= 4000000) { let nextNumber = currentNumber + preNumber; list.push(nextNumber); preNumber = currentNumber; currentNumber = nextNumber; } return list .filter(num => { if (num % 2 === 0) { return num; } }).reduce((sum, num) => { return sum + num; }); };