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 :

Complexité d'une fonction récursive


Sujet :

C

  1. #1
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut Complexité d'une fonction récursive
    Bonjour,

    J'aimerai bien savoir votre avis sur la complexité de cette fonction récursive suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int fct(int n)
    {
       if(n < 0) return 1;
       else
            return (fct(n-1) - fct(n-1));
    }
    Mercii pour votre aide.

    Sisiniya.

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Pour la complexité je dirais en 0(N!)
    Maintenant quand à ton code je ne vois pas trop son intérêt, il renverra toujours 0
    Tu calcules fct de n-1 et tu le soustrait à fct de n-1 du coup f(n-1) - f(n-1) = 0

  3. #3
    Membre du Club Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 67
    Points
    67
    Par défaut
    Oui il renvoi 0 pour des nombres positives c'est ça. Juste c'est un exemple pour calculer la complexité de ce type de fonction récursive.

    En fait, pourquoi vous avez dit O(n!), moi je vois que c'est O(n) . Que dites - vous ?

    Merci.

    Sisiniya

  4. #4
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    O(2^n) . Plus précisément, (2)^(n+1)-1

    Tu appelle deux fois ta fonction en n-1. Donc à chaque étape, tu double ton nombre de fonction appelé ! Et c'est pas parce-que c'est la même fonction qu'elle n'est pas renouvelé entièrement.

    n=0, 1
    n=1, 3 = 2*1 +1
    n=2, 7 = (2*1 + 1)*2+1
    etc...

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2008, 12h08
  2. algorithme comportant une fonction récursive
    Par TraxX dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/02/2008, 16h09
  3. Réponses: 4
    Dernier message: 03/01/2008, 10h53
  4. [fonction d'Ackermann] Écrire une fonction récursive
    Par java+ dans le forum Mathématiques
    Réponses: 5
    Dernier message: 19/06/2007, 01h14
  5. Réponses: 6
    Dernier message: 24/05/2007, 17h18

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