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

Scheme Discussion :

Optimisation d'une fonction récursive


Sujet :

Scheme

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Optimisation d'une fonction récursive
    Bonjour,

    J'ai cette fonction récursive en C qui est trop gourmande de point de vue temps d'exécution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    double t(double n,double i,double d)
    {
      if((n<0)||(i<0)||(d<0))
        return 0;
      else
        return t(n-1,i-1,d)+t(n-1,i,d)+t(n-3,i-3,d-2)-t(n-3,i-2,d)-t(n-3,i-1,d)+t(n-3,i,d-2)-t(n-4,i-4,d-2)+t(n-4,i-2,d-4)+t(n-4,i-2,d)-t(n-4,i,d-2)+del(n,i,d)-del(n-1,i-1,d)-del(n-2,i-1,d)-del(n-3,i,d-2)+del(n-3,i-2,d);
    }
    où del est défini par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    double del(double n,double i, double d)
    {
      double res;
      if((n==0)&&(i==0)&&(d==0))
        return 1;
      else
        return 0;
    }
    Cette fonction t sera utilisé dans 3 boucles for en variant n, i et d.

    Je veux l'implémenter avec Lisp ou Scheme pour leur efficacité dans ce type de cas.
    A l'aide!

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Quelque soit la technique d'amélioration que tu choisis elle sera applicable en C. Le problème est algorithmique. Il n'est pas lié à un langage.

    Maintenant quelques questions : est-ce normal que les paramètres soient des doubles ? La valeur de retour est toujours un entier… pourquoi un double ? C'est étrange. À quoi sert « double res; » ? C'est quoi ces noms non significatifs « t » et « del » ?

Discussions similaires

  1. [AC-2007] Optimisation d'une fonction récursive
    Par Kitsu dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/08/2010, 12h59
  2. Optimisation d'une fonction
    Par BNS dans le forum C++
    Réponses: 7
    Dernier message: 15/12/2007, 23h25
  3. Réponses: 6
    Dernier message: 27/06/2007, 17h44
  4. [fonction d'Ackermann] Écrire une fonction récursive
    Par java+ dans le forum Mathématiques
    Réponses: 5
    Dernier message: 19/06/2007, 02h14
  5. Réponses: 6
    Dernier message: 24/05/2007, 18h18

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