Maximalen Parameter einer Funktion herrausfinden
Verfasst: Freitag 20. Juni 2014, 14:24
Hallo an alle ,
ich möchte gerne für die Funktionen fib1(n), fib3(n), fib5(n) den maximalen Parameter n herrausfinden, bzw bis zu einer Zeit von 10s.
Hat jemand eine Idee dafür?
Mit dem Aufruf der Funktion "fib1_test(0)" bekam ich abn n=496 die Fehlermeldung: "RuntimeError: maximum recursion depth exceeded", wenn
ich aber "fib1(497)" aufrufe funktioniert es doch. Warum dann über den Aufruf in der Schleife nicht?
ich möchte gerne für die Funktionen fib1(n), fib3(n), fib5(n) den maximalen Parameter n herrausfinden, bzw bis zu einer Zeit von 10s.
Hat jemand eine Idee dafür?
Mit dem Aufruf der Funktion "fib1_test(0)" bekam ich abn n=496 die Fehlermeldung: "RuntimeError: maximum recursion depth exceeded", wenn
ich aber "fib1(497)" aufrufe funktioniert es doch. Warum dann über den Aufruf in der Schleife nicht?
Code: Alles auswählen
def fib1(n): # Funktion berechnet die n-te Fibonacci-Zahl
if n <= 1:
return n # Rekursionsabschluss
return fib1(n-1) + fib1(n-2) # Baumrekursion
#funktioniert bis n=496. Bei n=497
def fib3(n):
f1, f2 = fib3Impl(n) # Hilfsfunktion, f1 ist die Fibonacci-Zahl von (n+1) und f2 ist die Fibonacci-Zahl von n
return f2
def fib3Impl(n):
if n == 0:
return 1, 0 # gebe die Fibonacci-Zahl von 1 und die davor zurück
else: # rekursiver Aufruf
f1, f2 = fib3Impl(n-1) # f1 ist Fibonacci-Zahl von n, f2 die von (n-1)
return f1 + f2, f1 # gebe neue Fibonacci-Zahl fn+1 = f1+f2 und die vorherige (fn = f1) zurück.
def fib5(n):
f1, f2 = 1, 0 # f1 ist die Fibonaccizahl für n=1, f2 die für n=0
while n > 0:
f1, f2 = f1 + f2, f1 # berechne die nächste Fibonaccizahl in f1 und speichere die letzte in f2
n -= 1
return f2
def fib1_test(z):
z+=1
print z, ":"
print fib1(z)
fib1_test(z)
def fib3_test(z):
z+=1
print z, ":"
print fib3(z)
fib3_test(z)
def fib5_test(z):
z+=1
print z, ":"
print fib5(z)
fib5_test(z)