rekursion und weiterer aufruf von anweiseungen



  • hallo!
    Wir haben folgenden kleinen gemeinen quelltext. Bitte nicht ankreiden dass hier cin verwendet wird anstatt printf aber da es eher c als c++ ist dachte ich schreib es mal hier rein

    #include <iostream.h>	
    unsigned pd(char s[], unsigned length) {
    	char ca, ce;
    	unsigned u=0;
    	if (length<=1) return 1;
    	u=pd(&s[1], length-2);
    
    	if((ca=s[0])==(ce=s[--length])) {/*<<--??*/
    	     return u;
     	}
    	s[0]=ce;
    	s[length]=ca;
    	return 0;
    }
    
    int main() {
    	char hund[]="toto", mann[]="otto";
    	cout<<pd(hund,4)<<"\n";
    	cout<<hund<<"\n";
    	cout<<pd(mann,4)<<"\n";
    	cout<<mann<<"\n";
    }
    

    Ich habe dazu folgende Frage zur oben markierte if-Anweisung. Wird diese immer ausgeführt oder nur sol lange wie die rekursion auf u=pd(&s[1], length-2); möglich ist? So richtig habe ich den Programmablauf noch nicht verstanden.
    pd wird mit dem um eine Stelle gekürzten Array und der länge um zwei reduziert wieder ausgeführt und das ergebnis u zugewiesen. und dann komm ich nicht weiter!

    Danke für Hinweise!!



  • Die if-Anweisung wird nur dann nicht ausgeführt, wenn die Funktion wegen length<= 1 vorher verlassen wurde (oder die Rekursion unendlich ist, aber das kann hier nicht passieren).



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • nieselfriem schrieb:

    aber da es eher c als c++ ist dachte ich schreib es mal hier rein

    Du solltest eins unbedingt tun: dich entscheiden. Entweder C oder C++.
    Übrigens: <iostream.h> ist weder das eine noch das andere, sondern nur ein seit 10 Jahren veraltetes Überbleibsel aus der Zeit vor dem C++ Standard.



  • pumuckl schrieb:

    Übrigens: <iostream.h> ist weder das eine noch das andere, sondern nur ein seit 10 Jahren veraltetes Überbleibsel aus der Zeit vor dem C++ Standard.

    Na bravo, jetzt habe ich mich gerade mal an <iostream.h> gewöhnt
    und auf einmal soll das so plötzlich wieder verlaltet sein? 😮
    ( 🕶 )



  • Javaner schrieb:

    Na bravo, jetzt habe ich mich gerade mal an <iostream.h> gewöhnt
    und auf einmal soll das so plötzlich wieder verlaltet sein? 😮
    ( 🕶 )

    Nicht auf einmal. :p

    Vielleicht solltest du die Literatur, von der du das hast, verbrennen. Denn es ist wahrscheinlich, dass noch ähnliche Dinge vorkommen... 😉


Log in to reply