Aller au contenu

Fonction d'Ackermann

Le cadre

La fonction d'Ackermann-Pรฉter est dรฉfinie rรฉcursivement comme suit :

A(m,n)={n+1 si m=0A(mโˆ’1,1) si m>0 et n=0A(mโˆ’1,A(m,nโˆ’1)) si m>0 et n>0

Exercice

Coder une fonction rรฉcursive ackermann en Python.

Aide

Il suffit d'รฉcrire proprement la structure conditionnelle et les cas associรฉs.

Guide
๐Ÿ Script Python
def ackermann(m, n):
    if ...:
        return ...
    elif ...:
        return ...
    else:
        return ...
def ackermann(m, n):
...
# Tests
assert ackermann(2, 3) == 9
ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”ื”
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(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)
rounded
>>> 
 
x
x
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 : 5/5
.128013y- 4akSw2tlsv3h+b5P,egro61d/0)p:7inf=(ucm050B0v0k0f0I0l0m0d0O0l0f0m0m0L010k0I0F010406050m0N0P0P0f0x0b040h0y0l0N0*0y0J050C0;0?0^0`0/0F04051a131d0C1a0/0B0I0n0Y0!0$0(0p0I0w0p0l1r0p0k0-050T0r0l0v1m0#0%011q1s1u1s0k1A1C1y0k0x1b0k0p1E1o010K0V0v0J0f0P0v010Y0}0m0F0f0J0(0j1y1,1.1V1G1Y1C1#1%0-0a0d0t0x0y0F0y0m0I100J0d0R1*0x0x0v0O28131?0J1b0C1T2l1Q1S1R1z0B1^0(1u0J1!251y1j1l0Z1F2v0I2x0J0y2B1y0F2e1b2j2l2P0:1-292D1W2I0x0@0l0-0A2i2T0.2S1@2V1G2X2Z0-0j2%1.2)2j2u012.0f2!040o2=2k0/2^2,0(2{2}0e302@2T2_360-0s39323b342`0y2Y2|0-0z3g2*2U1n2-3l2/040H391e2N132B2o0B1S2t3j0O2J1(1b3D1c3B2R142(053J0R2O3i3t0(0g0-0R0K3z333Y010i0-0d3(3X2E2`0K0-0f0O0g0v3m0J123R2?3r2_0,040M3/2+3*0J0-0P463s3;430u393.3)3;49043~2R4j1W430E0G3g0d4v4i3:1W3!040I3%3 2k4x474k4a4h413j0y0-0L0L4K4p1G0P0I0-0D4c420-4t4E0.4w4(4G4d4z0-2e0k0N0x4n2(4*3c0-4=2?4@4M0-0q4R4y4T4V042$4$064(4L3*4A0v1u4D2P4|484_504H1W4N044P5j4+524W4Y3j434#2P574)4v593;4A4.4:4`4F5B2W3@3_3{0@3}5t3*43454$5I2-4J4$5g3;5m0c5p2_4U2#5P4e0-4g5X5U0(5(545*4q0-0E4u4w5/015b0W0v5?1G5v5`5z5|5D0S5F5$3j4l3^3`3|5G3W5k620-5S4o51355W5f5|5!6a3*5;556m6i0(4f6t4I046d5M1.6g5|5R616o044b5T4S6z5,6B5J4m6S1G6s5.6P016v6K014r5_56133U0v2l2M6-3C1k3E2o2r2m0f1B6:0C3D0/6}0S0U0W04.