rekursion



  • Ich habe Verständnisschwierigkeiten mit Rekursionen.Ich habe folgendes Programm geschrieben ,das einen Text normal und dann gedreht ausgibt:

    #include <stdio.h>
    #include <conio.h>

    void DrehdenText(char *);

    /********************************
    Hauptprogramm
    ********************************/

    void main()
    {

    char text[100];
    printf("Bitte einen Text eingeben: ");
    scanf(" %s",text);
    printf("\nDer Text ist: %s ",text);

    DrehdenText(text);

    //Ausgabe des gedrehten Textes
    printf("\nDer neue Text: %s\n",text);

    }

    void DrehdenText( char *Text2)
    {
    char *ZeigerVar1,*ZeigerVar2;
    char h;

    for(ZeigerVar2=Text2;*ZeigerVar2;ZeigerVar2++);
    ZeigerVar2--;

    for(ZeigerVar1=Text2;ZeigerVar2>ZeigerVar1;ZeigerVar1++,ZeigerVar2--)
    {
    h= *ZeigerVar1;
    *ZeigerVar1=*ZeigerVar2;
    *ZeigerVar2=h;
    }
    }

    Ich will dieses Programm nun folgendermaßen abändern:
    Ich will ein rekursives Unterprogramm schreiben, das den String zunächst vorwärts ausgibt.Bevor das rekursive Programm beendet wird, ist der String in der nächsten Zeile rückwärts auszugeben!
    Kann mir irgendjemand helfen?



  • Mach eine funktion, die gibt den Buchstaben des Strings aus der der Rekursionsebene enstspricht. Dann ruft sich die Funktion selber auf mit dem Parameter(Rekursionsebene+1). Hinter diesen Funktionsaufruf setzt du nochmal die Ausgabe des Buchstabens der der aktuellen Rekursionsebene entspricht. Du musst natürlich jedesmal überprüfen ob der String schon zu ende ist, dann darf sich die funktion nicht mehr selber aufrufen. Viel Spaß beim Umsetzen.



  • Danke für die schnelle Antwort!
    Ich bekomm das aber irgendwie nicht umgesetzt, ich programmiere erst seit 2 Wochen
    ,kann mal einer bitte den Quelltext richtig abändern?
    Danke schon mal im Voraus!!!!



  • Dein Quelltext hat nichts mit einer Rekursion zu tun. Rekursion nennt man es wenn eine Funktion sich selber wieder aufruft (vereinfacht). Versuch doch einfach mal das was ich geschrieben habe Schritt für Schritt umzusetzen.

    kleine Hilfe :

    void ausgabe(char* strptr, int ebene)
    {

    * Ausgabe des Buchstabens strptr[ebene]

    if (!(strptr[ebene]==0)) ausgabe(strptr,ebene+1); else { printf("\n"); }

    * Ausgabe des Buchstabens strptr[ebene]

    }

    Dann solltest du das aber echt hinbekommen 😉

    [ Dieser Beitrag wurde am 18.01.2003 um 13:36 Uhr von etechniker editiert. ]


Anmelden zum Antworten