Rendre un alogorithme C plus rapide !

Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009 - 30 déc. 2005 à 13:21
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008 - 31 déc. 2005 à 10:48
Bonjour @ tous !

Voici j'ai un algo en C. Cet algo sert à calculer la suite de fibonacci.

Pour ceux qui ne la connaisse, ma suite de fibonacci est définie par :

u(0)= 1
u(1)=1
u(n)=u(n-1)+u(n-2)

J'ai donc créer un algo qui permet de faire ce calcul ! Le voila :

#include <stdio.h>
#include <stdlib.h>


int fibonacci(int n)
{

if(n<2) {
return 1;
}else{
return fibonacci(n-1)+ fibonacci(n-2);
}

}

Pour l'appeller voilà ce que j'utilise :

int main()
{
int n;


scanf("%d", &n);
printf("%d\n", fibonacci(n));

return 0;
}

Mon problème dès que n>35 le temps d'éxécution de mon algo commence à devenir long !

Voila des contraintes qui mon été impossées :

LIMITES DE TEMPS ET DE MEMOIRE




<LI>Temps : 0.25 s sur une machine à 1Ghz.
<LI>Mémoire : 2000 Ko.</LI>


CONTRAINTES




<LI>n < = 5000
<LI>u(n) < 1000000000</LI>
Merci de m'aider à améliorer cette alogo pour qu'il aille plus vite !


@++


Optitech

C'est super le forum de Codes-sources.com ! On trouve tout ce que l'on a besoin !

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 déc. 2005 à 13:38
C'est très simple, un petit tableau te suffit. Le tout c'est de pas faire ca de manière récursive, sinon tu calcules plein de fois la même chose
Un tableau de 2 éléments devrait suffire, mais pour commencer, tu peux faire avec un tableau de n éléments si tu veux calculer fibo(n)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 déc. 2005 à 13:49
Essaie, devrait aller:

DWORD Fibonacci(DWORD n)
{
if(n < 2) return 1;
DWORD i = 2; DWORD d 0, a 0, b = 1; while(i++ <n) {d a + b; a = b; b = d;}
return d;
}

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 déc. 2005 à 13:52
Fallait pas lui donner la réponse, c'est pour un concours :)
0
Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009
30 déc. 2005 à 13:55
C'est pour ca que j'ai modifé l'enoncée !

Optitech

C'est super le forum de Codes-Sources.com ! On trouve tout ce que l'on a besoin !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 déc. 2005 à 14:01
ben vraiment je ne fais que des conneries aujourd'hui, désolé.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
31 déc. 2005 à 10:48
C'est pas grave c pour le prologin je parie lol...

neodelphi
0
Rejoignez-nous