Adloun

Fibonacci, ou l'arbre qui explose

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 6 — Fonctions récursives

Énoncé

Coder la suite de Fibonacci () en version récursive naïve. Compter ses appels pour , montrer que sa complexité est exponentielle et proposer la version itérative en .

Corrigé

def fib(n: int) -> int:
    if n <= 1:
        return n
    return fib(n - 1) + fib(n - 2)

Pour , l'exécution nécessite appels récursifs (dont 3 évaluations redondantes pour fib(2) et 5 pour fib(1)). Le nombre total d'appels croît à la même vitesse que la suite elle-même, soit de façon exponentielle en . Version itérative en :

def fib_iter(n: int) -> int:
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
    return a

Cette itération effectue additions, a une profondeur de pile nulle et résout le problème de redondance de calcul.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.