Vidéo 7 : Copier-coller Fibonacci

\(\newcommand{\ds}{\displaystyle}\) \(\newcommand{\Frac}{\ds\frac}\) \(\renewcommand{\r}{\mathbb{ R}}\) \(\newcommand{\C}{\mathbb{ C}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\z}{\mathbb{ Z}}\) \(\newcommand{\Q}{\mathbb{ Q}}\) \(\newcommand{\N}{\mathbb{ N}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\ol}{\overline}\) \(\newcommand{\abs}[1]{\left| \,{#1} \right|}\) \(\newcommand{\pv}{\;;\;}\) \(\newcommand{\ens}[1]{\left\{ {#1} \right\}}\) \(\newcommand{\mens}[1]{\setminus\left\{ {#1} \right\}}\) \(\newcommand{\Par}[1]{\left({#1}\right)}\)

Vidéo 7 : Copier-coller Fibonacci

Copier-coller pour Fibonacci

Voici les 12 premiers termes de la suite de Fibonacci :

\(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144\)

Plus généralement, les deux premiers termes de cette suite sont 1 et encore 1 et, chaque terme de la suite à partir du troisième s’obtient en faisant la somme des deux précédents. Par exemple, ci-dessus, \(89 = 34 + 55\).

On cherche à calculer le \(\mathtt{n}\)-ème terme de la suite de Fibonacci. Comme on ne dispose pas encore de la structure de contrôle Python permettant de le faire de manière appropriée (la boucle \(\mathtt{for}\)), on va utiliser une astuce pas très élégante, des copier-coller. On calculera le 200e terme. On trouvera que c’est un entier de 42 chiffres et qui commence par 2805. Pour accélérer la saisie, on fera des copier-coller de copier-coller.

On utilisera quatre variables :

Variable Initialisation Rôle
\(\mathtt{n}\) \(\mathtt{n=2}\) Rang du terme courant
\(\mathtt{x}\) \(\mathtt{x=1}\) Avant-dernière valeur de la suite
\(\mathtt{y}\) \(\mathtt{y=1}\) Dernière valeur calculée
\(\mathtt{z}\) Aucune \(\mathtt{z = x + y}\) : valeur suivante

Indications

La répétition sera assurée par des copier-coller. Supposons stockés

  • l’avant-dernier terme, disons x, de rang n-1
  • le dernier terme, disons y, de rang n

Alors le prochain terme sera z=x+y et il faut penser à remettre à jour les variables pour l’étape suivante.

Solution

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
x=1
y=1
n=2


# ------------ Copier ce code 200 fois ---------------
z=x+y
n=n+1
print(n, "ème terme :", z)
x=y
y=z