• [^] # Re: sonntag

    Posté par . En réponse à la dépêche Lisaac 0.12 en GPL v3. Évalué à 2.

    En fait, de façon générale, on peut toujours transformer un code recursif en un code impératif.

    Tu es vraiment sûr ?


    Alors, le résultat intéressant si je me rappelle bien, c'est que les fonctions récursives dites récursives primitives peuvent être transformées en programme impératif utilisant un espace mémoire fixe (sinon ça n'a pas d'intérêt).

    Le cas d'exemple de fonction récursive non-primitive, c'est la fonction d'Ackermann qui ressemble un peu à celle que tu donnes en exemple.

    Sinon à propos de l'exemple de factorielle, on l'écrit de façon récursive terminale en ajoutant un argument "accumulateur":

    int fac(int acc, int n) {
    if (n < 1)
    return acc;
    else
    return fac(acc *n, n-1);
    }


    et on l'appelle fac(1, n).