ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
389
389
EMPFEHLEN
-
19.04.10 20:04 #1
- Registriert seit
- Jan 2010
- Beiträge
- 51
Hallo Community,
ich habe folgenden Code gegeben:
Code c:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
int fibo( int n ) { int erg1, erg2; if ( (n==0) || (n==1) ) return 1; else { /* Hier erfolgt der erste rekursive Aufruf */ erg1 = fibo( n-1 ); /* Symbolische Markierung für die Rücksprungadresse: R1 */ /Hier erfolgt der zweite rekursive Aufruf */ erg2 = fibo( n-2); /* Symbolische Markierung für die Rücksprungadresse: R2 */ return erg1+erg2; } }
Nun soll der Code in einem Hauptprogramm mit a = fibo(3); aufgerufen werden. Nun soll die Gestalt und Inhalt des Stacks für alle erforderlichen Schritte skizziert werden.
Leider komme ich hier nicht weiter. Ich habe folgendes:
Nach dem Funktionsaufruf in Zeile 10 sieht der Stack folgender maßen aus:
n=3
erg1= ?
erg2 = ?
nun wird die Funktion aus Zeile 10 mit n-1 nochmal aufgerufen. Also habe ich:
n = 3 n=2
erg1=? erg1=?
erg2=? erg2=?
nun wird die Funktion aus Zeile 10 noch einmal aufgerufen:
n = 3 n=2 n=1
erg1=? erg1=? erg1= 1 (Da nun die Bedinung in Zeile 4 erfült ist und return1)
erg2=? erg2=? erg2=?
Aber wie sieht nun der Stack im nächsten Schritt aus? Ich bin ja der Meinung, das es nach dem return aus der ersten Funktion (im dritten Aufruf) in Zeile 16 weiter geht. Aber mein n ist nun 1. Also wird fibo (1-2) aufgerufen? Also:
n = 3 n=2 n=1 n=-1
erg1=? erg1=? erg1= 1 erg1=1
erg2=? erg2=? erg2=? erg2=?
Ich denke, dass an dieser Stelle ein Denkfehler passiert ist. Kann mir wer kurz helfen?
Danke!
Ähnliche Themen
-
[C++] Speicher reservieren als Funktion
Von Bumbbleman im Forum C/C++Antworten: 9Letzter Beitrag: 14.07.09, 15:44 -
Search inside the Music - Wie verwaltet man große Musiksammlungen mit Java?
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 25.04.08, 10:04 -
Server verwaltet Clients per Threads
Von MrBean06 im Forum C/C++Antworten: 9Letzter Beitrag: 05.12.07, 15:57 -
Wie verwaltet/organisiert ihr eure Codeschnipsel?
Von stanleyB im Forum Coders TalkAntworten: 3Letzter Beitrag: 11.04.06, 15:26 -
Folgender Fehler:
Von mrfishly im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 08.09.04, 09:36





Zitieren
Login





