【发布时间】:2017-08-13 08:56:20
【问题描述】:
在下面的代码中,我试图解决河内塔问题。为什么会出现分段错误(核心转储)?
当我尝试访问无法访问的内存时会出现分段错误,但在此程序中我没有尝试访问任何无法访问的内存。
#include <stdio.h>
#include <stdlib.h>
void steps(int n, int t, int p)
{
int i, k = 6 - (p + t);
if (n == 1) {
printf("%d-->%d\n", n, t);
}
for (i = 0; i < 2; ++i) {
if (i == 0) {
steps(n - 1, k, p);
printf("%d-->%d\n", n, t);
} else {
steps(n - 1, t, k);
}
}
}
int main()
{
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
steps(n, 3, 1);
return 0;
}
【问题讨论】:
-
需要递归停止条件。
-
好的,所以我必须将其余代码包装在 else 中!谢谢
-
我拒绝了编辑,因为没有任何改进。
-
标题误导性很强,请编辑。