【发布时间】:2020-02-27 05:19:35
【问题描述】:
那么如何运行 Ackermann 的函数而不遇到 Segmentation fault (core dumped) 错误,因为我的程序试图访问/扩展它无法访问的内存?也许将 GCC 的内存限制扩大到 256MB?它会在大约 9MB 的内存使用情况下导致此错误。我运行 Manjaro Linux
代码:
#include<stdio.h>
int ack (int m, int n) {
if (m == 0)
return n + 1;
else if (n == 0)
return ack(m - 1, 1);
else
return ack(m - 1, ack(m, n - 1));
}
int main() {
int i, j;
for (i = 0; i <= 5; i++)
for (j = 0; j <=5; j++)
printf("Result for ackermann(%d, %d) is: %d\n",i, j, ack(i, j));
return 0;
}
为重现结果添加了代码
【问题讨论】:
-
我猜你需要修复你的代码。
-
我们可以看看实现吗?函数很紧凑,代码应该不会太大吧?
-
无代码 == 我们无法回答。 minimal reproducible example 请。
-
发生了一些事情,所以无法回到这里。例如,我添加了代码。抱歉耽搁了
标签: c++ c segmentation-fault ackermann