Shakan972
Messages postés43Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention17 avril 2015
-
25 mars 2007 à 15:46
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 2013
-
27 mars 2007 à 11:26
Bonjour tout le monde je suis en train d'élaborer un programme qui simule une suite de Fibonacci et quand j'execute le programme il m'affiche des résultats négatifs à partir du 60e terme par là ,est-ce normal ?
Je ne pense pas donc j'aimerais bien si possible avoir une astuce pour outre passer ce problème :)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 25 mars 2007 à 16:10
Si tu obtien des nombres négatifs après un certain temps, c'est certainement parce que tu utilise une variable signé. La limite d'une variable signé codé sur 32 bits est 2147483647 je crois. Pour une variable non signé c'est 4294967295.
Quoi qu'il en soit, on ne peut pas aller plus haut que ces limites avec une variable 32 bits (int, long). Va falloir travailler directement en mémoire. Fait une rechercehe sur ce site, il y a des exemples de ce genre.
acx01b
Messages postés280Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention 8 juillet 20146 25 mars 2007 à 17:26
heu tu dois confondre avec une autre suite en rapport avec fibonacci car la suite de fibonacci c'est
u0 = 1, u1=1, u(n+1) = u(n) + u(n-1)
il existe aussi l'ensemble des suites u(n+1) = u(n) + u(n-1) avec u(i) et u(i+1) fixés
la croissance de ces suites est de type exponentielle
Vous n’avez pas trouvé la réponse que vous recherchez ?
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 25 mars 2007 à 17:32
Je crois joky que ce qui tend vers le nombre d'or, c'est quand on divise le nombre actuel que l'on obtien avec la suite de fibo par le précédent obtenue.
Shakan972
Messages postés43Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention17 avril 2015 25 mars 2007 à 17:41
J'ai effectivement trouvé une piste du côté d'une bibliothèque nommé "gn.h"
Le problème est que j'ai du mal à l'utiliser dans un de mes programmes en l'occurence mon fameux programme qui simule une suite de Fibonacci.
Qui plus est les commandes que l'on propose pour compiler la bibliothèque sont des commandes unix y aurait-il un moyen pour compiler cette bibliothèque sur DEV-C++ ?
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 26 mars 2007 à 20:52
Et j'suis bientot en 3année de licence de maths lol
Tristesse !
La suite de Fibonacci c'est là suite qu'on obtient en additionnant les deux termes précédents. Donc oui problème de "profondeur" avec les variables.
#include
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 26 mars 2007 à 22:53
Salut:
Un résultat négatif est absolument faux, si tu parts avec deux termes U0 et U1 dont la somme est >= 0.
Historiquement, cette suite est utilisée pour compter le nombre de lapins qu'on peut obtenir en faisant l'accouplement des individus de la génération (n-1) et (n-2), donc c'est logique que cette suite est toujours > 0.
U0 = 1
U1 = 1
Un = U(n-1) + U(n-2)
// Version récursive
int Fib (int n) {
if (n <= 1) {
return 1;
}
return Fib (n-1) + Fib (n-2);
}
________________________________________________________________________________
A.B. :
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 mars 2007 à 04:11
Je ne crois pas que le problème soit là. Le problème c'est qu'après une certaine valeur, la variable qui compte va dans le négatif. La seule explication est, selon moi, qu'il dépasse les 2147483647 et donc, qu'il utilise une variable signé. Pour corrigé, soit travailler en mémoire (très grand nombre), soit utiliser une variable non signé (mais probablement insuffisant, on retombra à 0 dépassé 0xFFFFFFFF (4294967295)).
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 27 mars 2007 à 11:26
Salut:
Tu as raison, mais je ne sais pas quel rang peut donner un tel chiffre.
vaut mieux utiliser unsigned int que int dans ces situations.
________________________________________________________________________________
A.B. :
"Dieu nous donne des mains, mais il ne bâtit pas les ponts