tempResult = [0, 1, 1];
def fibonacci (number):
if ( number == 1 or number == 2):
return 1
if ( tempResult[number] == -1 ):
result = fibonacci ( number-1 ) + fibonacci ( number-2 )
tempResult[number] = result
return tempResult[number]
for idx in range(3,1001):
tempResult.insert(idx, -1)
for idx in range(1,1001):
print idx," : ",fibonacci(idx)
위와 같이 사용하면, 재귀일지라도 매우 빠른 속도로 1부터 1000까지의 피보나치 수열의 값을 구할 수 있다.
더 빠르게 계산하는 방법은 아래와 같다.
def fibonacci2 (number):
if ( number == 1 or number == 2):
return 1
previous = 1
result = 1
sum = 0
for i in range(3, number+1):
sum = result + previous
previous = result
result = sum
print i," : ",result
return result
fibonacci2(1000)
1-1000까지 피보나치 수열의 값 : finbonacci_1000.txt
'Coding > Python 삽질기' 카테고리의 다른 글
100000! ( 100000 팩토리얼 ) & 1000000! ( 1000000 팩토리얼 ) (0) | 2013.06.22 |
---|---|
KMP algorithm (0) | 2013.05.06 |
10000개의 겹치는 않는 좌표 만들기 (0) | 2012.11.07 |