Suite fibo
Résolu/Fermé
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
-
21 mars 2013 à 22:08
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 23 mars 2013 à 13:11
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 23 mars 2013 à 13:11
4 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
23 mars 2013 à 11:15
23 mars 2013 à 11:15
Dans ta boucle for (i = 3; i <= n; i++) il faut que tu commences à 2, pas à 3 :
for (i = 2; i <= n; i++)
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
23 mars 2013 à 12:45
23 mars 2013 à 12:45
Pour le problème des nombres négatifs à partir d'une certaine valeur c'est normal, parce que les types primitifs ont une plage de valeurs, au delà de laquelle on ne peux plus les utiliser.
Voir : Java - Les types de données
L'utilisation des double est une fausse bonne idée, car ils sont moins précis. Plus la valeur sera grande, plus le résultat sera imprécis. Et l'utilisation des DecimalFormat n'y changera rien.
Si tu veux utiliser des valeurs entières sans limite d'amplitude ni de précision, tu devrais utiliser la classe BigInteger, voici sa documentation : java.math.BigInteger
Voir : Java - Les types de données
L'utilisation des double est une fausse bonne idée, car ils sont moins précis. Plus la valeur sera grande, plus le résultat sera imprécis. Et l'utilisation des DecimalFormat n'y changera rien.
Si tu veux utiliser des valeurs entières sans limite d'amplitude ni de précision, tu devrais utiliser la classe BigInteger, voici sa documentation : java.math.BigInteger
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 12:50
23 mars 2013 à 12:50
Je l'ai ai mi en long
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 23/03/2013 à 13:05
Modifié par KX le 23/03/2013 à 13:05
Les long sont un peu mieux que les int, mais ils auront aussi rapidement une limite...
Avec des int tu peux calculer jusqu'à n=45, et avec des long jusqu'à n=91... on est très loin des 1000 !
Voici un exemple avec BigInteger :
Avec des int tu peux calculer jusqu'à n=45, et avec des long jusqu'à n=91... on est très loin des 1000 !
Voici un exemple avec BigInteger :
import java.math.BigInteger; public class SuiteFibonacci { public static BigInteger fibonacci(int n) { BigInteger u0 = BigInteger.ONE, u1 = BigInteger.ONE; for (int i=2; i<=n; i++) u1 = u0.add(u0=u1); return u1; } public static void main(String[] args) { for (int n=0; n<=10; n++) System.out.printf("%d\t%s\n",n,fibonacci(n)); System.out.printf("%d\t%s\n",1000,fibonacci(1000)); } }
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 13:11
23 mars 2013 à 13:11
Merci sa marche
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
23 mars 2013 à 03:26
23 mars 2013 à 03:26
Bonsoir/Bonjour,
ton programme fonctionne parfaitement.
ou est le problème?!
ton programme fonctionne parfaitement.
ou est le problème?!
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 11:04
23 mars 2013 à 11:04
PAr exemple pour n = 6, il me trouve 8 au lieu de 13, c'est pas bon
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 23/03/2013 à 11:45
Modifié par walidovich_85 le 23/03/2013 à 11:45
peut etre kil faut juste régler le nombre de boucle.
pour moi, je me suis partis comme ça:
switch (n) {
case 0:
System.out.println("fubonacci(0)=0");
break;
case 1:
System.out.println("fubonacci(1)=1");
break;
default:
int fiboPrecedent=0;
for(int i=1;i<n;i++){
int tmp=fibonnaci;
fibonnaci=fibonnaci+fiboPrecedent;
fiboPrecedent=tmp;
}
System.out.println("fubonacci("+n+")="+fibonnaci);
break;
}
et ttes les routes mènent a Rome
Being normal is boring... being geek is interesting
pour moi, je me suis partis comme ça:
switch (n) {
case 0:
System.out.println("fubonacci(0)=0");
break;
case 1:
System.out.println("fubonacci(1)=1");
break;
default:
int fiboPrecedent=0;
for(int i=1;i<n;i++){
int tmp=fibonnaci;
fibonnaci=fibonnaci+fiboPrecedent;
fiboPrecedent=tmp;
}
System.out.println("fubonacci("+n+")="+fibonnaci);
break;
}
et ttes les routes mènent a Rome
Being normal is boring... being geek is interesting
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 11:52
23 mars 2013 à 11:52
Moi je préfère avec les if, je comprend mieux
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 11:32
23 mars 2013 à 11:32
Et c'est normale que quand je tape des grands nombres sa devien négatif?
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
23 mars 2013 à 11:34
23 mars 2013 à 11:34
comme quoi?
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 11:52
23 mars 2013 à 11:52
pour 72, il m'affiche -2015728079
Il faut pas que je passe en double, c'est peut plus grand q'un entier
Il faut pas que je passe en double, c'est peut plus grand q'un entier
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
23 mars 2013 à 12:00
23 mars 2013 à 12:00
je me rappel que j'ai testé ton code.
et ça donne pas des t=résultats négatifs
et ça donne pas des t=résultats négatifs
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
23 mars 2013 à 12:04
23 mars 2013 à 12:04
en effet, voial le résultat pour n= 1000:
Entrez la valeur de n (minimum 1) :
1000
Le résultat de la suite de Fibonacci pour 1000 vaut : 1556111435
Entrez la valeur de n (minimum 1) :
1000
Le résultat de la suite de Fibonacci pour 1000 vaut : 1556111435
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
23 mars 2013 à 12:06
23 mars 2013 à 12:06
A partir de 46, sa me donne des résults négatifs
23 mars 2013 à 12:08