Fibonacci

Résolu
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)

3 réponses

  1. Bonjour

    Et si tu essayais de faire les comparaisons avec == au lieu de = ?
    1. salut,

      Dans un premier temps j'ai fais une petite fonction récursive pour le faire :

      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);
      }
      D'ailleur en passant, pitié essayez d'indenter votre code pour la lisibilitée.

      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