Funktionen in Python schriftlich berechnen können?
Wie kommt man hier schriftlich auf 10?
def Foo(x):
if (x == 1):
return 1
else:
return x + Foo(x - 1)
print(Foo(4)) # >>> 10
Ich verstehe es nicht. Kann mir jemand erklären, wie man schriftlich das hier berechnet und die 10 herausbekommt?
5 Antworten
Dies wird rekursiv berechnet:
Foo(4) = 4 + Foo(3)
Foo(3) = 3 + Foo(2)
Foo(2) = 2 + Foo(1)
Foo(1) = 1
Jetzt "von hinten":
Foo(2) = 2 + 1 = 3
Foo(3) = 3 + 3 = 6
Foo(4) = 4 + 6 = 10
https://perlgeek.de/de/artikel/rekursion schau hier. Deine Funktion summiert alle Zahlen von 1 bis x rekursiv auf
Mann hat hier :
4 + (4-1) + ((4-1)-1)...
4+3+2+1 = 10
Foo(4)=4+Foo(3)=4+( 3+Foo(2) )=4+ (3+( 2+Foo(1) ) )=4+( 3+( 2+ (1) ) )
(Anmerkung: Die Klammerung demonstriert die Berechnungsreihenfolge)
Oder anders Formuliert:
Foo berechnet die Summe der Zahlen von 1 bis x, was wiederum x*(x+1)/2 ist.
Das ist schlicht die Summe aller Zahlen bis zur übergebenen Zahl.
Foo(4) = 4+Foo(3) = 4+3+Foo(2) = 4+3+2+Foo(1) = 4+3+2+1 = 10;