Coding/Python 삽질기2013. 6. 20. 01:06

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


Posted by chobocho