Project Euler - Problem 2
원래 소스는 앞의 두 항을 받아서 400만 미만의 값들을 더하는 형태였는데, 문제의 답을 구하는 데에는 충분했지만 문제에서 주어진 것이 아닌 다른 질의를 하려면 굉장히 귀찮아지는 단점이 있었다. 때문에 두 수를 받아서 범위 내에 있는 피보나치 수열의 짝수 항을 더하도록 다시 만들었다.
def sum_even_fib(minimum, maximum, a=0, b=1):
'''
This recursion function is to find the sum of all even-valued terms in
the Fibonacci sequence which is more than minimum and do not exceed
maximum.
>>> sum_even_fib(1, 4000000)
4613732
>>> sum_even_fib(1, 1000)
798
>>> sum_even_fib(123, 456)
144
'''
c = a + b
if c > maximum:
return 0
if c >= minimum and c % 2 == 0:
return c + sum_even_fib(minimum, maximum, b, c)
else:
return sum_even_fib(minimum, maximum, b, c)
if __name__ == "__main__":
print sum_even_fib(1, 4000000)
Python의 doctest 모듈도 한번 써봤다.