J'ai essayé de regarder ce que donnait le temps de calcul pour ces deux fonctions :parisse a écrit :ça peut d'ailleurs donner lieu à des problèmes de maths intéressants comme le fait qu'une programmation récursive pour calculer la suite de Fibonacci entraine un temps de calcul proportionnel ... à la suite de Fibonacci.
Code : Tout sélectionner
Fiboiter(n):={
local A,B,C,k;
A:=1;B:=1;
si n<2 alors return 1;fsi;
pour k de 1 jusque n-1 faire
C:=A+B;A:=B;B:=C;
fpour;
return C;
}
:;
Code : Tout sélectionner
Fiborecur(n):={
si n<2 alors return(1);fsi;
return(Fiborecur(n-1)+Fiborecur(n-2));
}
:;
Code : Tout sélectionner
LTit:=seq(time(Fiboiter(k))[0],k=10..300) ;
(point(k+10,LTit[k]))$(k=0..290) ;
Je fais la même chose avec Fiborecur :
Code : Tout sélectionner
LT:=seq(time(Fiborecur(k))[0],k=20..30) ;
(point(k+20,LT[k]))$(k=0..10) ;
Code : Tout sélectionner
Reg:=exponential_regression([k$(k=20..30)],[LT[k]$(k=0..10)]) ;
plot(Reg[1]*Reg[0]^x,x=20..30) ;
J'aurais aimé savoir si tout cela est bien cohérent (seulement 11 valeurs en récursif par exemple) et mérite d'être présenté à des élèves.