• [^] # Re: Loupé

    Posté par . En réponse au lien La récursivité sur linuxfr. Évalué à 3.

    ah oui, j'ajouterai aussi que la condition de fin de récursivité est plus lisible si c'est les premières lignes (exit early); et si tu est tant que ça obsédé par les performances tu peux utiliser les indication unlikely ou autre

    voici un petit code simple :

    int count(int n) {
     if( n <= 0 ) return 0;
     if (n%10000 == 0) std::cout << n << " ";
     return 1 + count(n-1);
    }
    int main(int argc, char *argv[]){
     int n;
     n = std::atoi(argv[1]);
     std::cout << count(n) << std::endl;
     return 0;
    }

    à compiler avec -O3 pour que le compilo vire la récursivité

    g++ -O3 countr.cc -o countr
    ./countr 1000000000 
    [...] 90000 80000 70000 60000 50000 40000 30000 20000 10000 1000000000

    sans le -O3 j'ai évidemment un stack overflow ;)

    maintenant je t'invite à coder à ta façon ces 3 lignes de codes d'appel récursif; techinquement j'aurais pu en mettre que 2, mais la centrale sert de s'assurer de pas avoir une optimisation trop agressive du genre int a(int n) {return n;}

    Une fois que tu as fais ce petit morceau de code va trouver un codeur et demande lui ce que ça fait. puis va voir un autre codeur avec les 3 lignes pour la même question.

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent