Schleife



  • Hallo,
    ich habe folgenden Code:

    #include <iostream>
    // und so weiter
    
    int main() {
        bla();
        // *1*
    
        // blablabla
    }
    
    // diese Funktion -->
    void bla() {
        // sie ruft sich selbst wieder auf
    }
    

    Wie schafe ich es jetzt, dass meine komplette Funktion abgebrochen wird zu einem
    bestimmten Punkt und das Programm ab dem Punkt *1* weiterläuft?

    Mit break bricht sich anscheinend nur die Funktion in der Funktion ab.

    Vielen Dank im Voraus!!!



  • Ich verstehe nicht ganz, was du meinst... Entweder du kannst mit "return" aus der Methode zurückkehren, oder eine Exception werfen.



  • Baue in bla() eine Verzweigungsmoeglichkeit ein, die nicht bla() aufruft und die auf jeden Fall irgendwann erreicht wird. Kleines Beispiel:

    #include <iostream>
    void bla(int i) {
      if (i > 20) {
        std::cout << "i>20 - Abbruch!" << std::endl;
        return;  //Funktion beenden OHNE erneuten Aufruf von bla()
      }
      std::cout << "bla(), i = " << i << std::endl;
      bla(++i);
    }
    
    int main() {
      std::cout << "## TEST bla(5) ###" << std::endl;
      bla(5);
      std::cout << "## TEST ENDE ######" << std::endl;
    }
    

    Ueberleg die erst selbst was die Ausgabe des Programms sein muesste und probiers dann selbst aus 😉
    Das Ganze nennt sich uebrigens "Rekursion" bzw. "rekursiver Funktionsaufruf", falls du bei google oder Wikipedia genaueres erfahren moechtest 😉


Anmelden zum Antworten