TP : suite de Fibonacci#

Dans cette feuille, vous allez implanter les trois algorithmes vus en TD pour calculer la suite de Fibonacci.

#include <iostream>
#include <vector>
using namespace std;

Exercice 1 : Fibonacci, version tableau#

  • Écrire la documentation puis implanter la fonction fibonacciTableau:

// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
int fibonacciTableau(int n) {
    // REMPLACER CETTE LIGNE ET LA SUIVANTE PAR VOTRE RÉPONSE
    throw std::runtime_error("À faire");
}
  • Vérifier que votre fonction passe les tests:

CHECK( fibonacciTableau(1) == 1 );
CHECK( fibonacciTableau(2) == 1 );
CHECK( fibonacciTableau(3) == 2 );
CHECK( fibonacciTableau(4) == 3 );
CHECK( fibonacciTableau(5) == 5 );
CHECK( fibonacciTableau(6) == 8 );
CHECK( fibonacciTableau(9) == 34 );

Exercice 2 : Fibonacci, version trois variables#

  • Écrire la documentation puis implanter la fonction fibonacciVariables:

// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
int fibonacciVariables(int n) {
    // REMPLACER CETTE LIGNE ET LA SUIVANTE PAR VOTRE RÉPONSE
    throw std::runtime_error("À faire");
}
  • Tests :

CHECK( fibonacciVariables(1) == 1 );
CHECK( fibonacciVariables(2) == 1 );
CHECK( fibonacciVariables(3) == 2 );
CHECK( fibonacciVariables(4) == 3 );
CHECK( fibonacciVariables(5) == 5 );
CHECK( fibonacciVariables(6) == 8 );
CHECK( fibonacciVariables(9) == 34 );

Exercice 3 : Fibonacci, version récursive#

  • Écrire la documentation puis implanter la fonction fibonacciRecursive:

// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
int fibonacciRecursive(int n) {
    // REMPLACER CETTE LIGNE ET LA SUIVANTE PAR VOTRE RÉPONSE
    throw std::runtime_error("À faire");
}
  • Tests :

CHECK( fibonacciRecursive(1) == 1 );
CHECK( fibonacciRecursive(2) == 1 );
CHECK( fibonacciRecursive(3) == 2 );
CHECK( fibonacciRecursive(4) == 3 );
CHECK( fibonacciRecursive(5) == 5 );
CHECK( fibonacciRecursive(6) == 8 );
CHECK( fibonacciRecursive(9) == 34 );
  • ♣ Exécuter la version récursive avec une grande valeur pour n (par exemple 200).

  • Que se passe-t-il?

  • ♣ A votre avis, est-il possible de remédier à ce problème?