为什么会失败?我用 C 语言编写了 Ackermann 的函数,并使用 long 来确保数字不会太小。然而,当我对 m 和 n 超过(包括)4 时,它给了我一个segmentation fault: 11
. 有谁知道为什么?
#include <stdio.h>
int ackermann(long m, long 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));
}
int main() {
long result = ackermann(4, 4);
printf("%lu", result);
}