Somme des premiers entiers
On veut créer une fonction somme qui renvoie la somme des entiers de 1 à n inclus.
nest un entier- Exemples :
- \(1+2+3+4 = 10\), donc
somme(4)renvoie10. - \(1+2+3+4+5 = 15\), donc
somme(5)renvoie15.
- \(1+2+3+4 = 10\), donc
On pourra constater que
somme(5)est égal àsomme(4) + 5.- De manière générale, pour
n > 0,somme(n)est égal àsomme(n - 1) + n. - Pour
n = 0, la somme est vide, donc vaut0. Comme pour toutn < 0.
🐍 Console Python
>>> somme(0)
0
>>> somme(1)
1
>>> somme(2)
3
>>> somme(3)
6
>>> somme(4)
10
Voici plusieurs versions, à vous de dire, pour chacune, si elle est itérative ou récursive, correcte ou fausse.
🐍 Script Python
def somme(n):
for i in range(n):
total += i
return total
Réponse
Il y a deux erreurs dans cette version itérative :
- il faut initialiser
totalà0avant la boucle ; - l'entier
nn'est pas ajouté (range(n)exclutn). Pour corriger :- soit on fait un tour de boucle en plus,
- soit on ajoute
i + 1à chaque tour au lieu dei, - soit, on fait une boucle de
1inclus àn + 1exclu.
🐍 Script Python
def somme(n):
print(somme(n - 1) + n)
Réponse
Il y a deux erreurs dans cette version récursive :
- il faut une structure conditionnelle pour renvoyer
0sinest négatif ; - il faut renvoyer le résultat et non l'afficher. Ici cette fonction renverrait
Nonesi elle ne plantait pas avant !
🐍 Script Python
def somme(n):
return n * (n + 1) / 2
Réponse
Il y a deux erreurs dans cette version avec une formule directe :
- il faut une structure conditionnelle pour renvoyer
0sinest négatif ; - le résultat sera ici un flottant, si
nest gigantesque le résultat sera arrondi ; il faut utiliser une division entière avec// 2
Remarque : cette formule est au programme de la spécialité mathématiques, en première.
À vous de compléter la fonction ci-dessous pour qu'elle réussisse les tests.
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
.128013*3,R eb=àatkmf2nou514s7/égi9)-hw(:;v6ylq08PScprd+050W0g0l0k0B0N0w0f0T0N0k0w0w0i010l0B0U010406050w0s0n0n0k0V0M040S0r0N0s0=0r0q050y0|0~10120`0U04051i1b1l0y1i0`0W0B0K0*0,0.0:0F0B0A0F0N1z0F0l0^050#0h0N0g1u0-0/011y1A1C1A0l1I1K1G0l0V1j0l0F0*150w0U0k0q0:0p011M1w010o0%0g0q0k0n0g1G1)1+1:1O1?1K1_1{0^0a0f0R0V0r0U0r0w0B180q0f0Z1%0V0V0g0T2g1b1~0q1j0y1#2t1Y1!1Z1H0W200:1C0q1^2d1G1r1t0+1N2D0B2F0q0r2J1G0U2m1j2r2t2X0{1*2h2L1;2Q0V0 0N0^0f0u2q2#0_2!1 2%1O2)2+2-0p2:1+2=2r2C012`0k2,040f0c2~2s0`312^0:34360f0v3a302#323g2-0t3k3c3m3e330r2*352-0L3r2?2$1v2_3w2{370x3B3d3E3f3G3y370Q3K3t3M3v3x3h0C3S2@3U3o040u0P3Z3D2M3V3H0u2/1c2;3s3!3,3$0u2}3;2 3?3+2(3O360u393|3b3C3n410^0u3j453l3@403W4a3q4d3~484h3%3A4k473u3_3J4q3L3^493%3R4v3T4x4n0u3Y4B4f3F4n0p3)4d1m2V1b2J2w0W1!2B3u0T2R1|1j4R1k4P2Z4N4X0Z2W4C1;0m0^0Z0o3k4r3U0G2-4?4w2(0o0^0w0r0~0g4{4-1O0@040H544I3f0^1a4N4|560^0D0I3k0f0f4@3,0T0u0^030f0K0g0V2e190f2f0z0V0k0=5v3r5m5m5o1;0w1.04020O0s0r0l0J0e1^0K0r0B1L0,0f50522i0g0)1^0=5w0)2j0u0f0j0f0q5P5R5T5H5I5K2_0^0l5S355l5~0:0r0^0i645g0:0n0B0^4M2X065I5n6b014/040o3w6a555c040B6r5b010r4_6u5e2X6k6s330h0^5D0q0A535f6F57596N6x6d4a5a3 5h040d6w6W6t6C2;6E6x67040X6!326T3%6V32575j5|6j5J6l0q60620N6.3u6+0X694d6)6#330^6v4k6j656m6I0!0s0V6%2 773n6~0#704k4l3u6n4;6=3u6A5n6R780q4~045%1{7w3U6P7H3^5d7K1;6@5k767m4W5r045t5v5x0B5z0V0z0T7i2e5G7c5}6l5M0^5_5S5U5W5Y5!0k5$511{5)5+0q5-5x5)2.5=5@7:5{7+6{6F6n0B4=767e6}047k2s7S3U6+020N5T756D7e6:6g2;7e577Q6h6`7,8a7g0l7i8i378s6e048u3}7d6l6n0g0(6M2Z6l8x6_6`7e6n2m8E7j713#4 7{8S8v8U0^6Q8T6F8g8G8k3,6+0E8%3,6:3:8:6x6@8{1;73925 8h3r7s3U7u0g8d8 787y7N2_7D7F8+2 8w8.9h6$9p017P5l8@1;5q5s5u5.7Z2h1r2m2o9l3b8N6F7.5O5Q7;5V0q5X5Z0f5#9k7}0f5,5Z815:845^9M878z8B6x8b9d6(8f7M8e6l8m8o0J8q9.6l8t9r8V888X8O8D8F956c8J8L9H9*788P8R9}0^8y3=8A899+a28$9;8;9:8r9=0^0ba49s9o7A7n97am6*0^6-az788}ad040Dat6+0y0yat6:3{6h1b4*0g2t2UaT4Q1s4S2w2z2u0k1JaW0y4R0`a*0!0$0(04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)