verständnisschwierigkeiten beim ausgabe



  • HAllo Leute,
    morgen habe ich zwischentest und muss ausgaben schreiben. auf diese beispiel verstehe ich die ausgabe nicht

    woher bekomme ich die ausgabe TRNE ?

    #include <iostream>
    using namespace std;
    	char s[]="OSTERN";
    
    	void f(int k) {
    		if (s[k]=='\0')
    		return;
    
    		cout<< s[k];//hier wird R ausgegeben
    		f(k+2);//hier wird f(4) aufgerufen und also R ausgegeben und //wird automatisch f(6) aufgerufen und wird mit return beendet
    		cout<< s[k+1];
    		}
    int main()
    {
    	f(2) ;
    	cout <<endl;
    return 0;
    }
    

    danke euch


  • Mod

    Der Kommentar in Zeile 9 ist falsch.

    Aufruf f(2) (aus main):
     Zeile 9: k == 2, Ausgabe 'T'
      Aufruf f(4) (aus f(2), Zeile 10):
       Zeile 9: k == 4, Ausgabe 'R'
        Aufruf f(6) (aus f(4), Zeile 10):
         k == 6, Abbruch. Eine Ebene zurück
       Zeile 11: k+1 == 5, Ausgabe 'N'
       Zeile 12: Funktionsende. Eine Ebene zurück
     Zeile 11: k+1 == 3, Ausgabe 'E'
     Zeile 12: Funktionsende. Eine Ebene zurück
    Ende.
    
    Gesamtausgabe: TRNE
    

    Dein Problem ist auch nicht die Ausgabe an sich, sondern das Verständnis des Programmverlaufes, insbesondere Rekursion.


Anmelden zum Antworten