Aller au contenu

La fonction puissance (2)

Le cadre

On souhaite améliorer la vitesse de calcul de \(a^n\), pour \(a\) flottant et \(n\) entier naturel avec un algorithme plus rapide, de type « diviser et régner »

On constate que

  • \(a^{2022} = a^{1011} × a^{1011}\)
  • \(a^{2023} = a^{2022} × a\)

et que, de manière générale

  • si \(n\) est pair, \(a^n = a^{n/2} × a^ {n/2}\), avec \(n/2\) qui est bien entier
  • sinon, \(a^n = a^{n-1} × a\)

Exercice

Coder une fonction récursive puissance utilisant ce principe.

###(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 : /
.128013.8592x/.Tr;nbOylae%u)*dVM6z3×Am?(P02-,59fq7}8 _o={pcwgvF41`kRéhtsàSLCDi:E050t0o0,0n0?0m0-0Q0W0m0n0-0-0T010,0?0V010406050-0q0B0B0n0g0l040/0S0m0q190S0i0Q020n0B0V0h0Q0)0o1j0g0M0q0o0-050d1g1i1k1m1e0V04051R1K1U0d1R1e0t0?0Z111315170+0?0Y0+0m1,0+0,1c050|0j0m0o1%1416011+1-1/1-0,1^1`1?0,0g1S0,0+1|1)010L0~0o0i1x0o01111p0-0V0n0i170G1?2p2r2d1~2g1`2j0B2l040a0Q0E0g0S0V0S0-0?1s1u0`2n0g0g0o0W2P1K2w0i1S0d2b2#282a291@0t2y171/0i2i2M1?1!1$121}2/0?2;0i0S2^1?0V2U1S2Z2#361f2q1u2`2e2 0g1j0m1c0$2Y3a1d392x3c1~3e3g1c0G3k2r3m2Z2.013r0n3h040y3v2!1e3y3p173B3D0#3G3x3a3z3M1c0J3P3I3R3K3A0S3f3C1c0w3W3n3b1(3q3#3s040N3*3J3-3L3/3%040P3?3Y3^3!3$3D0K3P1V341K2^2(0t2a2-3Z0W302E0_1#1S330o353l454f0`4n3o400(1c0`0L453@2{010X1c0Q4z3 4B0i0L1c0V0q0?152r0W0o4G4t4B1b040D4T3,4I1c0n4Z3z4W0I3P4F4A3d1c0i4(3Z4W0r0@4,4-4H2e0W0$1c030Q0B0*2b4g0Q0g0*0W0q0g2N0Z0o0I0Q2^4O0o0g0Q0{570*0Y2;0g3W0Q5u4{4U2e0-2u04011C0i0Z0S0?1{0%0n0%0Q0.0Q130Q4M4O0-4Q5I0i0%5g2L5b0Q1u020Y0,0h0T0Q0F015t5v3+3z4v040?4y1L3l5w4!4/044;5`3w5|3z0S1c0T0T4,5;3Z0B0?1c0F4=404W4_612!5u6a404~5011145h1{0j144S6k1d5v6A633Z5?2U0,5b60366C400B4K040$0e6f6y066A6n4B5?0o1/5_6J6V5~6I5{6$1~65040p694.1~6c3t6/4|6+66686y6K4B6=046R386:176i4`6*176p04511u1I0,5Q0}5s6S6B5:733A1c0l6@5x6_046{6#7l0i4L4N4P0i4R6g4V1c4Y6y777m044%7G7l4*7p5}3q4:7O641c0d0d7S6b6d043u7L6^741c0r5/7j7H6E0{6H7X407w047o6|7H6,0s7;4#7@7+6}2e6X0 6x727%01756|811~797b5m0-7e0?1y7g806U7l7.6G0g6(627H7?5R7z7B7$7q7(4X7C5~7K868z881c4+7_7v7R8K876,0H7}2e6 3j8y7P8A7*8N8G7{8R7Q7J3*0d4q4m468,0d491K0,4b8;2+2$0n1_8.491Q4s8W012U0B0R0L0n0(0o0R0+0y1c1C1E1G1I0Q6j381X3m2^3z0n0t0B1t2O0?1t0Q2}0L6,1Q9n9p9r2P0H190,26040;0S1y0m0*0c2O0*1V3m1R0:1{4f1r5h0q6r0m5a0m6t4F8+048v5T7A0o0D0n5g0i8Y9*8f8h4J0*0g5H5!5N0`0q0c0Q9x4O5O1{2 0B0j2U9(0j2O102R059*609*0e9R8~0U0U5O2}0(0R0o0c0,0D010u5G0W0?0Q0q7c0c1D0V1`5h001kab1{0taM0V0V6Y10585a5c5^0-015g000Xa(0e2UaX2N1t0Z4O0q3C0?0x5k0e4f0B0d0C0LaF2W9t0i0R4x2}9s1t0T4x0p0G0F9,5Uba0P0n0p0y0Aba0F0L0m0S0n0,ba0;bl0ibibkbb2}br0G0Kbl0Hbi0^blbnbpbrbj0p0Fbx0FblbQby0LbubQ0y0=bibXbbbPbLbNbRbPbbb(b+bb6F6Hbl6PbPb%b*b@b)0F6Y5^bUb@0Jbl0GbVbXbWblb#bkb?b_b,c9b^0lc2blbd9.bfbh0Gbtbbbvb@0!bacpbbc1bBbMbOcacxb-7/8qblcdbb051D6-bbcdc8caaU0obwcvcycbcRb.cBbbcg4Rcibsb}0FbEbb0$babCcE0dcGblbhbN1w1y0ha~7A2P0R0W3C0m0TcWcN0G0P0y0eb ckb:0yc)005g0j1r0,b70f0g1H0r0Q0O0O0Q0b0Q2N0,1{avdr8qaP1{a/1ga=5T2Pam9k1Z1#3z201.1:1=8 3z2A2i2k1c2G9J0i0-1p1{0E0l558r2!1T479j389*7H0Y4W5%5)d/0hd;4F8V3S7x5S5U8C1~4W7F8F906M1cd33Vd^4?8I8$178T3Fe76h7)3~8G0Y6,0$0$0P0G0Neo6P0N0N0P0$0Ken0#7#361e8*4g2#4l2#8}4i2_40dI221;2v87dO2C2E0v592r4O2D45eF3+374o9*c 0De55g0$0ydj5+e(e*0Q0$0Gdj0z0Qe50Q5+7jelenep0Neretevex0G06e:d4e+e@e|5Q7y9-4Re)fa0Q0wdj0n9Zc{2T0*fd6A0y0y0N0K0Gbbd40F0P0F0J0w0w0#0F0wf8ff5Ufi0J5gfl5ue/fL9.fN5ge-0Qfn6rfqfs5vem0y0P0e0G0wfE0G0JfKd{fUe;fXfdf9fO0Qfce_e{e}7jey0e0P0Nf:f`5gfcf_fTfhe;0$fmfo1k58f$5ue?f+g6gb9/gddjgaf=gcfj0Fe^e`d4gjftd4f;8wgpgvgr5+0D582LdUaP0?a+drgr7jgS6Ab;eBd+1X478/4j8~0k1u2 drfYbo5c119V0S9X7H1k2O0+1jdr0c1c090D09g_0+c{9%0kg~bo0Y0D9?0r098Y365g0}dUaD5Z5lde9XbI242r7e5nhkhp0i195kdp5!0y0G0Qae0,0-5g0~0Q0lfY5b0n525GdU9(fG520q0m19aJ0?c{2PhDg.0Q1GaD2U0i4d0{g*5eaY9u1f281t0Y04ae2i2Yh:0ih=5Q1q10aT0g9x3$ht1{9f5OhKh,a-2Q1{0m00av5kaC4R5QaW0*0`htdD1Y48g#480{0}0 04.