version itérative d'une fonction récursive
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

version itérative d'une fonction récursive



  1. #1
    Zero Cold

    version itérative d'une fonction récursive


    ------

    Salut à tous,

    j'ai beau essayer de rédiger la version iterative de la function suivante :

    Code:
    void f(int n) {
        if(n==1) {
            printf("%d\t",n);
            return;
        }
        f(n-1);
        printf("%d\t",n);
        f(n-1);
        return;
    }
    mais je suis à court d'idée.

    Notamment, le resultat que retourne cette fonction est comme suit :
    f(0) -> 1
    f(1) -> 121
    f(2) -> 1213121
    f(3) -> 121312141213121

    Est-ce quelqu'un pourrait m'aider ? Merci d'avance.

    -----

  2. #2
    Chanur

    Re : version itérative d'une fonction récursive

    Bonjour,

    Déjà une remarque : tu devrais tester la fonction, parce qu'elle ne fait pas ce que tu dis.

    f (0) va lancer f(-1), f(-2), f(-3) etc. jusqu'à arriver à 1, c'est à dire des milliards de niveaux de récursivité.
    Chez moi, ça se dit : "Erreur de segmentation (core dumped)"

    f(1) affiche "1" (et non 121)
    f(2) affiche "1 2 1" (et non 1213121)
    f(3) affiche "1 2 1 3 1 2 1"
    ...
    f(n) affiche "{le résultat de f(n-1)} n {le résultat de f(n-1)}"

    Les valeurs affichées sont séparées par des tabulation et la liste se finit par une tabulation, sans retour chariot.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  3. #3
    Dlzlogic

    Re : version itérative d'une fonction récursive

    Bonjour,
    Un bon exemple à tester, c'est la fonction factorielle. C'est l"exemple type utilisé pour ce genre de chose.
    D'autre part, c'est curieux que vous n'ayez pas, comme Chanur, testé la fonction.

  4. #4
    PrRou_

    Re : version itérative d'une fonction récursive

    Bonjour
    tout est noyé dans les diverses remarques (plus ou moins justifiées à mon avis)...

    Citation Envoyé par Chanur Voir le message
    f(n) affiche "{le résultat de f(n-1)} n {le résultat de f(n-1)}"
    Voila ce qu'il fallait comprendre dans l'algorithme pour répondre à la question (n est supérieur ou égale à 1 était sous entendu).

    Maintenant, on peut calculer itérativement f(1), f(2), puis f(3), ... jusqu'à f(n), grâce à une petite boucle
    Dernière modification par PrRou_ ; 12/12/2016 à 15h35.

  5. A voir en vidéo sur Futura
  6. #5
    imoca

    Re : version itérative d'une fonction récursive

    r <- '';
    for i=1..n:
    r<- r.str(i-1).r;// . pour contacter
    fin de for
    print r;

  7. #6
    PrRou_

    Re : version itérative d'une fonction récursive

    bon... voilà qui donne (presque) la solution... c'est str(i) qu'il faut concaténer.

Discussions similaires

  1. fonction récursive
    Par bastinoute dans le forum Mathématiques du collège et du lycée
    Réponses: 20
    Dernier message: 22/09/2013, 12h45
  2. Programmation fonction recursive scilab
    Par invitefeb30a8e dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 24/04/2011, 17h15
  3. fonction primitive-récursive
    Par invite56460777 dans le forum Mathématiques du supérieur
    Réponses: 16
    Dernier message: 06/06/2009, 04h30
  4. fonction partielle partiellement récursive
    Par invitef87a0c6b dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 15/03/2008, 10h37
  5. fonction recursive
    Par hterrolle dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 23/05/2006, 17h24