#include <stdio.h>
int ackermann(int m, int n) {
if (m == 0) {
return n + 1;
} else if (m > 0 && n == 0) {
return ackermann(m-1, 1);
} else if (m > 0 && n > 0) {
return ackermann(m-1, ackermann(m, n-1));
} else {
return 0;
}
}
int main(void) {
int m = 4, n = 2;
printf ("Ackermann(%d,%d): ", m
, n
); printf ("%d\n", ackermann
(m
, n
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBhY2tlcm1hbm4oaW50IG0sIGludCBuKSB7CiAgICBpZiAobSA9PSAwKSB7CiAgICAgICAgcmV0dXJuIG4gKyAxOwogICAgfSBlbHNlIGlmIChtID4gMCAmJiBuID09IDApIHsKICAgICAgICByZXR1cm4gYWNrZXJtYW5uKG0tMSwgMSk7CiAgICB9IGVsc2UgaWYgKG0gPiAwICYmIG4gPiAwKSB7CiAgICAgICAgcmV0dXJuIGFja2VybWFubihtLTEsIGFja2VybWFubihtLCBuLTEpKTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KaW50IG1haW4odm9pZCkgewogICAgaW50IG0gPSA0LCBuID0gMjsKICAgIHByaW50ZiAoIkFja2VybWFubiglZCwlZCk6ICIsIG0sIG4pOwogICAgcHJpbnRmICgiJWRcbiIsIGFja2VybWFubihtLCBuKSk7CiAgICByZXR1cm4gMDsKfQ==