Witam, napisałem sobie dwie funkcje liczące kolejne potęgi dwójki, jedną iteracyjnie za pomocą for'a, drugą rekurencyjnie, zaimplementowałem timery żeby sprawdzić jaka będzie różnica w czasie i ku mojemu zdziwieniu pokazują że funkcja licząca za pomocą for'a działa szybciej, dodatkowo maksymalna potęga dwójki jaką jest w stanie policzyć mój komputer rekurencyjnie to 997(8gb ramu), może mi ktoś przybliżyć jak to wygląda z funkcjami rekurencyjnymi w pythonie? Czy biblioteki tego języka są napisane jakoś inaczej w taki sposób że funkcje rekurencyjne się po prostu nie opłacają? Prosiłbym jeszcze o rady na co warto zwrócić uwagę przy przenoszeniu się z innego języka.
import time
def pot(podstawa, potega):
wynik=podstawa
for i in range(potega-1):
wynik=wynik*podstawa
return wynik
def potreku(podstawa, potega):
if potega==0: return 1
else: return podstawa*potreku(podstawa, potega-1)
start=0.0
stop=0.0
czas=0.0
start = time.time()
pot(2,997)
stop = time.time()
czas = stop-start
print(czas)
start = time.time()
potreku(2,997)
stop = time.time()
czas=stop-start
print(czas)