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
    invitec64e4f8e

    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
    invitebd98b571

    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

  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
    invitebd98b571

    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 invite6ebdfb3e 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