Bonjour,

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

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

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!