def fib(n, lookup): 
  
    # Cas d'arrêt
    if n == 0 or n == 1 : 
        lookup[n] = n 
  
    # On calcule la valeur si pas déjà calculée
    if lookup[n] is None: 
        lookup[n] = fib(n-1 , lookup)  + fib(n-2 , lookup)  
  
    # On renvoie la n-eme valeur
    return lookup[n] 

if __name__=="__main__": 
    n = 6 
    max = 100
    lookup = [None]*(max) # initialise la table de cache
    print("Le nombre de fibonacci est ", fib(n, lookup)) # affiche 8