rekursive Funktion terminiren

  • Hi
    Ich habe keine ahnung wie ich eine rekursive Funktion terminiren, die keine Schleife, keine if-Anweisung, keine switch-Anweisung und auch keine bedingte Auswertung (? :) enthält, die aber trotzdem terminiert :(

    Ich brauche nur eine Idea :wein:kein fertiges program.

  • Wenn Du auch C++ verwendest, könntest Du eine Exception werfen.

    zB könntest Du einen wert mitgeben, durch den Du bei jedem Aufruf dividierst. Wenn er 0 ist, wird eine exception geworfen.

  • Zitat


    //weil in C 0 == false ist, wird die
    //recursion nur aufgerufen, wenn n != 0 ist.
    n && foo(n-1);

    Bei Java weiß ichs, aber ist dieses Verhalten bei C++ auch standardisiert?

    lg Clemens

    To avoid horrible confusion, please pronounce the G in the word GNU when it is the name of this project.

  • In C ist es zumindest so:
    "Expressions connected by && and || are evaluated left to right, and
    evaluation stops as soon as the truth or falsehood of the result is known." (K&R)

    "Relational expressions like i > j and logical expressions connected by &&
    and || are defined to have value 1 if true, and 0 if false." (K&R)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!