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!