Fibonacci
Résolu
Zaga
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je voudrais écrire un programme en langage C qui me donne le n-ieme terme de la suite de Fibonacci. Pour cela j'ai écrit ceci :
#include <stdio.h>
int main(void) {
int nb, i=2, a=1, b=1, c;
printf("Saisissez un nombre entier : ") ;
scanf("%d", &nb) ;
if (nb=0) {
printf("u(%d)=1", nb);
}
if (nb=1) {
printf("u(%d)=1", nb);
}
if (nb>1) {
while (i<=nb) {
c=b+a;
a=b;
b=c;
i++;
}
printf("u(%d)=%d\n", nb, c);
}
}
Mais il me retourne u(1)=1 quelque soit le nombre que je rentre, je ne comprends pas pourquoi... :( (je précise que l'on ne peut pas utiliser de fonction récursive)
#include <stdio.h>
int main(void) {
int nb, i=2, a=1, b=1, c;
printf("Saisissez un nombre entier : ") ;
scanf("%d", &nb) ;
if (nb=0) {
printf("u(%d)=1", nb);
}
if (nb=1) {
printf("u(%d)=1", nb);
}
if (nb>1) {
while (i<=nb) {
c=b+a;
a=b;
b=c;
i++;
}
printf("u(%d)=%d\n", nb, c);
}
}
Mais il me retourne u(1)=1 quelque soit le nombre que je rentre, je ne comprends pas pourquoi... :( (je précise que l'on ne peut pas utiliser de fonction récursive)
3 réponses
salut,
Dans un premier temps j'ai fais une petite fonction récursive pour le faire :
Sinon, les erreurs dans ton code sont au niveau de tes tests :
ici tu donne la valeur à ta variable , il faut écrire des doubles '=' pour les tests:
naga
Dans un premier temps j'ai fais une petite fonction récursive pour le faire :
D'ailleur en passant, pitié essayez d'indenter votre code pour la lisibilitée.
int fibo(int iFib)
{
if (iFib == 0) return 0;
if (iFib == 1) return 1;
if (iFib == 2) return 1;
return fibo(iFib - 1) + fibo(iFib - 2);
}
Sinon, les erreurs dans ton code sont au niveau de tes tests :
if (nb=0)
if (nb=1)
ici tu donne la valeur à ta variable , il faut écrire des doubles '=' pour les tests:
if (nb==0)
if (nb==1)
naga