http://projecteuler.net/index.php?section=problems&id=2
http://www.ibm.com/developerworks/kr/library/os-eclipse-clojure/
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, ...
Find the sum of all the even-valued terms in the sequence which do not exceed four million.
>>피보나치 수열에서 400백만 이하의 모든 짝수들을 합한 결과는?
Beforehand
피보나치 수열의 equation은 다음과 같다.
F[n] = F[n-1] + F[n-2]
where F[0] = 0, F[1] = 1
수열을 나열해보면...
0 , 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
피보나치 수열을 구하는 아주 간단한 방법.
하지만 재귀에 의한 이 방법은 무한 시퀀스를 형성하기 때문에, 스택을 빠르게 채워 스택 오버플로우를 일으킬 수 있다. 이 문제는 Seqable object를 산출하는 lazy-seq 함수를 사용하여 해결할 수 있다.
Make Simple
여기서 간단하게 100이하의 피보나치 수열에 대해서만 생각해 보자.
짝수들은?
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
이 짝수들의 합은?
100을 처음으로 넘는 요소까지의 피보나치 수열을 정의하자.
100 이하의 피보나치 수열은?
그 중에서 짝수만 구하면?
이것들의 합은?
이제, 피보나치 수열을 지연시켜 구하는 함수를 fibo에 적용시키고, 100이 아닌 4000000을 적용하면 된다.
Resolve