La fonction factorielle
Le cadre
Pour un entier naturel \(n\), on note \(n! = 1 × 2 × 3 × 4 × ... × (n - 1) × n\), le produit des entiers naturels jusqu'à \(n\), sauf zéro.
Ainsi
- \(4! = 1 × 2 × 3 × 4 = 24\)
- \(5! = 1 × 2 × 3 × 4 × 5 = 120\)
On a aussi
- \(1! = 1\), il y a un seul facteur égal à \(1\),
- \(0! = 1\), comme un produit vide.
Exercice 1
Coder une fonction itérative factorielle qui prend un argument n entier naturel et qui renvoie la factorielle de n.
On garantit que
0 <= n < 1000 et n entier.
le module
math est désactivé pour cet exercice.
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,5/fr;nb o=ylaepcwgu)vd*4613kRmhtsP(S0+2i:050x0p0H0o0P0n0I0j0r0n0o0I0I0l010H0P0q010406050I0u0F0F0o0f0m040L0k0n0u0+0k0h050d0=0@0_0{0:0q04051b141e0d1b0:0x0P0w0Z0#0%0)0G0P0t0G0n1s0G0H0.050U0i0n0p1n0$0(011r1t1v1t0H1B1D1z0H0f1c0H0G1F1p010e0W0p0h0o0F0p010Z0~0I0q0o0h0)0O1z1-1/1W1H1Z1D1$1(0.0a0j0J0f0k0q0k0I0P110h0j0S1+0f0f0p0r29141@0h1c0d1U2m1R1T1S1A0x1_0)1v0h1#261z1k1m0!1G2w0P2y0h0k2C1z0q2f1c2k2m2Q0;1.2a2E1X2J0f0^0n0.0B2j2U0/2T1^2W1H2Y2!0.0O2(1/2*2k2v012/0o2#040C2?2l0:2_2-0)2|2~0z312^2U2`370.0c3a333c352{0k2Z2}0.0A3a1f2O142C2p0x1T2u3k0r2K1)1c3v1d3t2S152)053B0S2P3j1o1H0D0.0S0e3r343Q0)0s0.0j3W3P2F2{0e0.0e0o2h3m0P0p0n1D3%2,3Y010-040K3^2V3`0h0.133J2@2+403)3|0v0Q3h0j4e3$3X3)0I1=04010E1#0w0k3;0j0#0j3-3/0f3;3?1E2c0n001#0+0p0f0j2a020t0H0g0l0j0M014d4f473d0.2N2K0u283a4g3(1X0k0.0l4#4U3k0F0P2$4S4e4-3`3S040e3m4,4h2X0.0D4}4%1H0k3!042H523_3)0h0i0.0f1/0t0p3 2`3|3~452l4@3)4/4;5n3O5a1X3|0b59484 04442Q4$5v540.0N5z2`5r042%5t5p5w0.4b4=4f4?4~2.4W230x4Z0H5K3k4)044+5t5F5A5Y044X5#4!5-5Q5H040y5(41505U5_0)4_2f0H0u0f5D2)5.4V5;5!5$3h143M0p2m2N6i3u1l3w2p2s2n0o1C6l0d3v0:6v0T0V0X04.
Exercice 2
Coder une version récursive de factorielle.
On garantit que
0 <= n < 1000 et n entier. (Deviner pourquoi !)
###(Dés-)Active le code après la ligne
(Ctrl+I)
# Tests (insensible à la casse)(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
(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
.1280135/fr;nb o=ylaepcwgu)vd*4613kRmhtsP(S02-i:050w0o0G0n0O0m0H0i0q0m0n0H0H0k010G0O0p010406050H0t0E0E0n0e0l040K0j0m0t0*0j0g050c0;0?0^0`0/0p04051a131d0c1a0/0w0O0v0Y0!0$0(0F0O0s0F0m1r0F0G0-050T0h0m0o1m0#0%011q1s1u1s0G1A1C1y0G0e1b0G0F1E1o010d0V0o0g0n0E0o010Y0}0H0p0n0g0(0M1y1,1.1V1G1Y1C1#1%0-0a0i0I0e0j0p0j0H0O100g0i0R1*0e0e0o0q28131?0g1b0c1T2l1Q1S1R1z0w1^0(1u0g1!251y1j1l0Z1F2v0O2x0g0j2B1y0p2e1b2j2l2P0:1-292D1W2I0e0@0m0-0A2i2T0.2S1@2V1G2X2Z0-0M2%1.2)2j2u012.0n2!040B2=2k0/2^2,0(2{2}0y302@2T2_360-0b39323b342`0j2Y2|0-0z391e2N132B2o0w1S2t3j0q2J1(1b3u1c3s2R142(053A0R2O3i1n1G0C0-0R0d3q333P0(0r0-0i3V3O2E2`0d0-0d0n2g3l0O0o0m1C3$2+3X010,040J3@2U3_0g0-123I2?2*3 3(3{0u0P3g0i4d3#3W3(0H1;04010D1!0v0j3:0i0!0i3,3.0e3:3=1D2b0m001!0*0o0e0i29020s0G0f0k0i0L014c4e462_3R040O3U442k4f3%2W42394#3^3(0j0-0k0k4)4T3j0E0O0-0L3~2_3{4b4Z0.4e514*471W4V2e0G0t0e432P532_4@2#4R4d4=3_4V3;0H0o4{3j4}5h525j3(560S595b2(5d3j41044u0G3/3;3?4 5u1W3{3}5K4g4%045z2?5B3_4-040N4;5Q1G5f042$5P4$1G495!5+0(5X0x5.4+5R5T31133L0o2l2M5}3t1k3v2o2r2m0n1B600c3u0/6a0S0U0W04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)