Python 14. Napisz dwie funkcje obliczajace silnie (wersja iteracyjna i rekurencyjna). Za pomoca funkcji time z
modułu time porównaj czas działania obu funkcji przy obliczeniu silni z liczb z zakresu [20; 50) (sprawdz kilka
liczb, tak zeby była widoczna róznica w czasach wykonania).



Odpowiedź :

Przpraszam za to że cały kod jest po angielsku, przyzwyczajenie.

Czas jest wypisywany w notacji naukowej, ponieważ czasy dla małych silni są nieduże

def recursive_factorial(n):

   if n < 2:

       return n

   else:

       return n*recursive_factorial(n-1)

def iterative_factorial(n):

   data = []

   data.append(1)

   for i in range(2,n+1):

       data.append(i*data[-1])

   return data[-1]

from timeit import default_timer as timer

n=20

start = timer()

iterative_factorial(n)  

print("iterative" , timer()-start)

start = timer()

recursive_factorial(n)

print("recursive" , timer()-start)

n=34

start = timer()

iterative_factorial(n)  

print("iterative" , timer()-start)

start = timer()

recursive_factorial(n)

print("recursive" , timer()-start)

n=50

start = timer()

iterative_factorial(n)  

print("iterative" , timer()-start)

start = timer()

recursive_factorial(n)

print("recursive" , timer()-start)

n=40

start = timer()

iterative_factorial(n)  

print("iterative" , timer()-start)

start = timer()

recursive_factorial(n)

print("recursive" , timer()-start)