Suite fibo
Résolu
tortue60
Messages postés
250
Date d'inscription
Statut
Membre
Dernière intervention
-
tortue60 Messages postés 250 Date d'inscription Statut Membre Dernière intervention -
tortue60 Messages postés 250 Date d'inscription Statut Membre Dernière intervention -
4 réponses
Dans ta boucle for (i = 3; i <= n; i++) il faut que tu commences à 2, pas à 3 :
for (i = 2; i <= n; i++)
tortue60
Messages postés
250
Date d'inscription
Statut
Membre
Dernière intervention
j'ai remplacer 3 par 2 dans le for
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
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)); } }
Bonsoir/Bonjour,
ton programme fonctionne parfaitement.
ou est le problème?!
ton programme fonctionne parfaitement.
ou est le problème?!
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