Suite de Fibonacci en itératif (2)

Série d'exercices

Cet exercice fait partie d'une série :

La suite dite « suite de Fibonacci » est une suite d'entiers qui commence par \(0\) et \(1\). Chacun des autres termes est la somme des deux précédents : ainsi les termes suivants sont \(1\) (car \(0 + 1 = 1\)), \(2\) (car \(1 + 1 = 2\)), puis \(3\) (car \(1 + 2 = 3)\) et ainsi de suite. Les premiers termes sont donc : \(0\), \(1\), \(1\), \(2\), \(3\), \(5\), \(8\), \(13\), \(21\), \(34\)...

On dit que le terme d'indice \(0\) est \(u_0=0\), celui d'indice \(1\) est \(u_1=1\), celui d'indice \(2\) est \(u_2=1\) ... celui d'indice \(7\) est \(u_7=13\) etc.

On souhaite dans cet exercice déterminer les valeurs des \(n\) premiers termes de cette suite.

1. Avec une liste

Nous pouvons utiliser une méthode itérative qui crée un tableau valeurs tel que valeurs[i] contienne le terme de rang i de la suite de Fibonacci.

Compléter la fonction fibonacci qui prend en paramètre un entier n et renvoie le tableau contenant dans l'ordre tous les termes de la suite de Fibonacci de l'indice 0 à l'indice n compris.

Les ... peuvent représenter une ou plusieurs lignes de code.

Exemples
>>> fibonacci(0)
[0]
>>> fibonacci(1)
[0, 1]
>>> fibonacci(2)
[0, 1, 1]
>>> fibonacci(3)
[0, 1, 1, 2]
>>> fibonacci(9)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.1280135[tf4)+2rj3,sa-o iug0àm1]P6pOnlhe=céy:v(w;S/bdk050U0H0d0o0s0F0n0r0J0F0o0n0n0I010d0s0C010406050n0t0x0x0o0j0L040R0q0F0t0:0q0E050S0`0|0~100^0C04191g051j0S1j1l1g0^0U0s0N0(0*0,0.0G0s0u0G0F1z0G0d0?050Z0T0F0H1u0+0-011y1A1C1A0d1I1K1G0d0T0q0U101H0j1h0d0G0(130n0C0o0E0.0i011M1w010e0#0H0E0o0x0H1G1.1:1^1O1{1K1~200?0a0r0A0j0q0C0q0n0s160E0r0X1,0j0j0H0J2l19230E1h0S1*2y0d1(1%1)0U250.1C0E1}2i1G1r1t0)1N2I0s2K0E1!1s1G0C2r1h2w2y2$0_1/2m2Q1_2V0j0}0F0?0y2v2*0@2)242,1O2.2:0?0i2@1:2_2w2H012~0o2;040l322x0^352|0.383a0f3d342*363j0?0b3m3f3o3h370q2/390?0B3m1i2!192O2B0U2F360J1!211h3H1k3F2(1a2^053M0X2#3v1v1O0V0?0X0e3D3g3#0.0P0?0r3+3!2R370e0?1{1Z1~0J0J0s3=2{3-010=040O412+430E0?183U332`493@450g0M3t0r4n3;3,3@4b040N390H0t0j0n3m4p3?1_0q0?0I4A4g36450c483p0?404e2x4B423@3%040e3y4H4q2-4O4Z4C1O0q3/042T4%4T2-0T0?0j1:0u0H4M3w45474Q3Z4/2}4c4.4h4D0?0h53360x0s2=4`434j0z4A4S541O0J0y0?030r0D2m201U4?0r1K0%3|2K0%4u1K4x0%0U1:0%0*0r0`2k1L2o5I4X0E2t0s174m4o4I3w5l5n5p2m0o2n0K0k0w0r5B4w4y0c0v0z0r0I0r0v0r0O0d0q0t0k5|4y0g0r0Y5+4v5D0c0y5;5?0y5_2j0r2m020u0d0Q6a0g5U4n5W434V4X0j583w4s4P2$5i364*4O4d6x6o4r4;044?0E4^5d4i0?4}2(4!1O5a306L1_450m6t4a524~6y3w4E04576#6E1_6S042?4~6,1O4j4l4~064o6{6$6Z4t654y6U6?0?4L6;6Q3i4$764(0.455g6+77016(4G7f7b370?5,5D727c747q7m4,6Y3@6(0p7w6-5b6/7t7d7A4)567G786 5C717a507r04756P7l6v7J7h0?7z7k7P016.317O5j7Q7e2$6`5V7g4V2r0d4x6C2^6}4r7n704z6_193X0H2y2Z823G1s3I2B2D2z1Z1#2B0o1J850S3H0^8i0Y0!0$04.
2. Avec un dictionnaire

Nous pouvons utiliser une méthode itérative qui crée un dictionnaire valeurs tel que valeurs[i] contienne le terme de rang i de la suite de Fibonacci.

Compléter la fonction fibonacci qui prend en paramètre un entier n et renvoie un dictionnaire contenant comme clés tous les indices de 0 à n compris, et comme valeurs associées les termes de la suite de Fibonacci correspondants.

... peut représenter une ou plusieurs lignes de code.

Exemples :
>>> fibonacci(0)
{0: 0}
>>> fibonacci(1)
{0: 0, 1: 1}
>>> fibonacci(2)
{0: 0, 1: 1, 2: 1}
>> fibonacci(3)
{0: 0, 1: 1, 2: 1, 3: 2}
>>> fibonacci(9)
{0: 0, 1: 1, 2: 1, 3: 2, 4: 3, 5: 5, 6: 8, 7: 13, 8: 21, 9: 34}

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.1280135[tf4{)}+2r3,sa-o iug0m1]P6pnl7he=cy:v(w;S/bdk050T0H0d0p0t0E0o0s0J0E0p0o0o0I010d0t0C010406050o0u0x0x0p0l0K040Q0r0E0u0/0r0D050R0_0{0}0 0@0C04181f051i0R1i1k1f0@0T0t0M0%0)0+0-0G0t0v0G0E1y0G0d0=050Y0S0E0H1t0*0,011x1z1B1z0d1H1J1F0d0S0r0T0 1G0l1g0d0G0%120o0C0p0D0-0k011L1v010e0!0H0D0p0x0H1F1-1/1@1N1`1J1}1 0=0a0s0A0l0r0C0r0o0t150D0s0W1+0l0l0H0J2k18220D1g0R1)2x0d1%1$1(0T240-1B0D1|2h1F1q1s0(1M2H0t2J0D1Z1r1F0C2q1g2v2x2#0^1.2l2P1^2U0l0|0E0=0y2u2)0?2(232+1N2-2/0=0k2?1/2^2v2G012}0p2:040m312w0@342{0-37390f3c332)353i0=0b3l3e3n3g360r2.380=0B3s2_2*1u2|3x2~040F3l1h2Z182N2A0T2E350J1Z201g3P1j3N2%192@053U0W2!3u3F0-0U0=0W0e3L3f3-010O0=0s3?3,2Q360e0=1`1Y1}0J0J0t3}2`3^0;040N493E3 0D0=173$323D354c0h0L3s0s4t3|3@4h0=0M380H0u0l0o3l4v3~1^0r0=0I4F4n3v4c0g4f350x0t0=0w4R4O0=4r4l2w4G4a3 4T4V4X4b0=0i4s4u4N3^3/040t3=4#044%4g2,4j4M4w4I0=020v0d0P4L4{4}4S4U042=4{4=3 4c4!2#064u5n5b3v4i044z1J4C4E5g521N4c0c4,4)5d5f2%5y0-4c0z514H1N4J04592#5p3^4*5e4:4t5h1^4@0e3x5L4(4 4^5%4~5N3`4^4k5R5Y2|0S0=0l1/0v0H5C1^4c4e5x5M0-5U30615(5z0=0n5+3o505a5=0-5O0j6b3v5U5F3%5H014p5k2@5m5o5X6o5r5t4B4D5}68045B665,3h0=486F4o0=5K6e6o5O5Q2@5S4x5s4A5v6B5I0=6E5G62366I6j3^5O0q6*5D2;6Y6p6M6.53046i6O6%6x6W6A6K4Y6D6;5r6J5;6P0=6-6{67635d656$7b6=046N5l5n6f014@2q0d4C5:6S7m6}5u6 5l183)0H2x2Y7B3O1r3Q2A2C2y1Y1!2A0p1I7E0R3P0@7R0X0Z0#04.