Informatik Programm (Ausgabe)

...komplette Frage anzeigen

3 Antworten

Die main übergibt die 5. Die Funktion ruft sich selbst auf, mit dem Multiplikator 2.

Dies geht nun durch bis Stelle 0, 5 mal.

main -> berechnen(5) berechnen(4) berechnen(3) berechnen(2) berechnen(1) berechnen(0)

Nun gibt deine Funktion, weil n == 0 den Wert 1 zurück an den letzten Funktionsaufruf. Der multipliziert mit 2 (2) und gibt diesen Wert ein hoch, der wird wieder mit 2 multipliziert (4), das ganze passiert entsprechend 5 mal also 2, 4, 8, 16, 32.

der rueckgabewert sind immer 2er potenzen

also: im letzten aufruf wird 2 zurueckgegeben (2 * 1)

danach wird das wieder mit 2 multipliziert, also kommt 2 * (2 * 1) raus

und das ganze insgesamt 5 mal, deswegen kommt 32 raus:

2 * ( 2 * ( 2 * ( 2 * ( 2 * 1 ) ) ) )

aber ehrlich gesagt... in java programmiert man keine rekursiven methoden^^ es sei denn du hast das jetzt nur fuer uebungszwecke gemacht ;)

0

Hm, mal probieren, wir haben es hier ja mit Rekursion zu tun, also:

Rekursiver Abstieg:

x = berechnen(5) = 2 * berechnen(5-1) = 2 * ( 2 * berechnen(4-1) ) = ...

... = 2 * ( 2 * (2 * (2 * (2 * (1) ) ) ) )

Rekursiver Aufstieg:

hier wird nun von innen nach außen das Ergebnis ausgerechnet.


Die Abbruchbedingung war ja n == 0 und diese ist für x = 5 nach 5 Rekursionsschritten erreicht. Nun kann das Ergebnis im Rekursiven Aufstieg berechnet werden, also:

-> 2^5 = 32

check [ √ ]

Was möchtest Du wissen?