import matplotlib.pyplot as plt

def fibo(n):
    """ fonction calculant le nombre de fibonacci et renvoyant un couple (valeur, complexité).
    Dans ce cas particulier, la complexité est justement égale à la valeur
    """
    if n < 2:
        return (1,1)
    f1 = fibo(n-1)
    f2 = fibo(n-2)
    return (f1[0]+f2[0], f1[1]+f2[1])

listeFibo = [(1,1),(1,1)]
def fiboMemo(n):
    """ fonction calculant le nombre de fibonacci avec mémoïsation et renvoyant un
    couple (valeur, complexité).
    """
    if n >= len(listeFibo):
        f1 = fiboMemo(n-1)
        f2 = fiboMemo(n-2)
        listeFibo.append((f1[0]+ f2[0],1))
    return listeFibo[n]

abscisses = [n for n in range(0, 20)]
ordonnees1 = list(map(lambda x: fibo(x)[1], abscisses))
ordonnees2 = list(map(lambda x: fiboMemo(x)[1], abscisses))

print(abscisses)
print(ordonnees1)
print(ordonnees2)

plt.plot(abscisses, ordonnees1)
plt.plot(abscisses, ordonnees2)


plt.show()