Skip to content
Snippets Groups Projects
fibonacci.cpp 1.07 KiB
Newer Older
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
/** @file **/
#include <iostream>
#include <vector>
using namespace std;

/** Infrastructure minimale de test **/
#define CHECK(test) if (!(test)) cerr << "Test failed in file " << __FILE__ << " line " << __LINE__ << ": " #test << endl

/** Suite de Fibonacci
 *  @param n un entier strictement positif
 *  @return le n-ième terme de la suite de Fibonacci
 **/
int fibonacci(int n) {
    int u1 = 1;
    int u2 = 1;
    int tmp = 0;
    if ( n == 1 or n == 2 ) {
        return 1;
    } else {
        for ( int i = 3; i <= n; i++ ) {
            tmp = u2;
            u2 = u1 + u2;
            u1 = tmp;
        }
        return u2;
    }
}

/** Les tests de la fonction fibonacci **/
void fibonacciTest() {
    CHECK( fibonacci(1) == 1 );
    CHECK( fibonacci(2) == 1 );
    CHECK( fibonacci(3) == 2 );
    CHECK( fibonacci(4) == 3 );
    CHECK( fibonacci(5) == 5 );
    CHECK( fibonacci(6) == 8 );
}

Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
int main() {
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
    fibonacciTest();

    int n;
    cout << "Entrez un entier : " << endl;
    cin >> n;
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
    cout << "Fibonacci(" << n << ") vaut " << fibonacci(n) << endl;
Nicolas M. Thiéry's avatar
Nicolas M. Thiéry committed
    return 0;
}