問題内容
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
訳すと・・・
フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万を超えない範囲で、偶数値の項の総和を求めよ。
scalaのコード
fibo関数でフィボナッチ数列をListにつめていきます。400万を超えない範囲でとなっているので、400万を超えた時点でfibo関数から抜けます。その結果のListから偶数でフィルタをかけて、sum関数で合計を求めて終わりです。
def fibo(n1: Int, n2: Int): List[Int] = { val n = n1 + n2 if (n > 4000000) { Nil } else { n :: fibo(n2, n) } } val sum = fibo(0, 1).filter(_ % 2 == 0).sum println("sum = " + sum)