La suite de Fibonacci est une suite très connue.
Elle est construite de la manière suivante :
u_0 = M \in \mathbb{N}
u_1 = N \in \mathbb{N}
et, pour tout n \in \mathbb{N}, u_{n+2}=u_{n+1}+u_{n} .
On veut écrire un algorithme qui, pour M et N donnés, renvoie la liste des 10 premiers termes de (u_n).
Soient M=0 et N=1.
Quels sont les 10 premiers termes de la suite de Fibonacci (u_n) ?
On connaît les deux premiers termes de (u_n).
En effet :
u_0=M=0
u_1=N=1
On peut en déduire les suivants :
u_2=u_0+u_1=1
u_3=u_1+u_2=2
u_4=u_2+u_3=3
...
u_9=u_7+u_8=13+21=34
Les 10 premiers termes de la suite de Fibonacci avec M=0 et N=1 sont donc :
n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
u_n | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 |
Soient M=5 et N=2.
Quels sont les 10 premiers termes de la suite de Fibonacci (u_n) ?
On connaît les deux premiers termes de (u_n).
En effet :
u_0=M=5
u_1=N=2
On peut en déduire les suivants :
u_2=u_0+u_1=7
u_3=u_1+u_2=9
u_4=u_2+u_3=16
...
u_9=u_7+u_8=66+107=173
Les 10 premiers termes de la suite de Fibonacci avec M=5 et N=2 sont donc :
n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
u_n | 5 | 2 | 7 | 9 | 16 | 25 | 41 | 66 | 107 | 173 |
Quelle fonction écrite en Python permet pour M et N donnés de renvoyer la liste des 10 premiers termes de (u_n) ?
On veut définir un algorithme qui, à partir des deux premiers termes d'une suite de Fibonacci, renvoie la liste des 10 premiers termes.
On peut commencer par créer la liste L contenant le deux premiers termes de la suite : M et N.
Pour calculer le troisième terme, il faut ajouter les deux précédents, soit les deux dernier termes de la liste L.
Il suffit ensuite d'ajouter ce terme à la liste L.
On obtient ainsi la liste des trois premiers termes.
Pour obtenir le quatrième terme de la suite, il faut ajouter les deux précédents, soit les deux derniers termes de la liste L.
Il suffit donc de répéter la même commande que pour le troisième terme.
Finalement, il suffit de répéter 8 fois la même commande pour obtenir la liste des 10 premiers termes de la suite de Fibonacci.
La fonction écrite en Python qui permet pour M et N donnés de renvoyer la liste des 10 premiers termes de (u_n) est donc :
def u(M,N):
L=[M,N]
for k in range(2,10):
L.append(L[-2]+L[-1])
return L