IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Comment remonter une pile ?


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 42
    Points
    42
    Par défaut Comment remonter une pile ?
    Bonjour,
    je suis en train d'étudier la récursivité et je voudrais savoir comment faire pour remonter une pile.
    Je m'explique :
    Prenons cette algo de puissance n
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int PuisN (int somme, int x, int n) {
    if ( n == 1) { return somme; }
    return PuisN(somme *= x,x,n-1);
    }
    Mais si on veut par exemple que lorsque la somme est égale à un 32 pour 2^5. Je m'arrete, j'augmente mon X de 1 et je recommence à partir du niveau précédent à 2^4.
    Je fais comment un return PuisN(somme/x,x+1,n+1). Mais si je fais ca je ne crois que je suis à la position n-1 dans ma pile.
    Je vous demande cela parce que je teste un algo qui pour une position n donnée, si cette position n est bonne je continue à la position n+1 sinon je retourne à la position n -1.
    Voila merci beucoup

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par snoopo Voir le message
    je suis en train d'étudier la récursivité et je voudrais savoir comment faire pour remonter une pile.
    Une pile d'appel ?
    Pas possible.

    Citation Envoyé par snoopo Voir le message
    Mais si on veut par exemple que lorsque la somme est égale à un 32 pour 2^5. Je m'arrete, j'augmente mon X de 1 et je recommence à partir du niveau précédent à 2^4.
    Je fais comment un return PuisN(somme/x,x+1,n+1). Mais si je fais ca je ne crois que je suis à la position n-1 dans ma pile.
    Je vous demande cela parce que je teste un algo qui pour une position n donnée, si cette position n est bonne je continue à la position n+1 sinon je retourne à la position n -1.
    Le but recherché n'est pas clair...

    Pourquoi ne pas commencer à tracer les valeurs dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int PuisN(int somme, int x, int n)
    {
        printf("PuisN(%d, %d, %d)\n", somme, x, n);
        if (n == 1) {
            return somme;
        }
        return PuisN(somme *= x, x, n - 1);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >./a.exe 3 4
    PuisN(1, 3, 4)
    PuisN(3, 3, 3)
    PuisN(9, 3, 2)
    PuisN(27, 3, 1)
    PuisN(1, 3, 4) = 27

Discussions similaires

  1. Comment remonter une fenetre au premier plan?
    Par mamelouk dans le forum Qt
    Réponses: 4
    Dernier message: 15/10/2008, 14h52
  2. comment creer une pile et l'initialiser ?
    Par zana74 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/10/2007, 16h40
  3. Réponses: 7
    Dernier message: 24/03/2006, 10h51
  4. Réponses: 2
    Dernier message: 28/08/2003, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo