#include<stdio.h>
int main()
{
static int x;
if(x == 10)
printf("\n thanks...");
x++;
return (x=main());
}
在运行程序时,它会卡在输出上:
感谢...
这里有什么问题?
答案 0 :(得分:5)
此递归没有终止条件。因此,您可以选择 - a - StackOverflow。
也许这就是你想要尝试的:
#include<stdio.h>
int main(void)
{
static int x;
if(x==10)
{
printf("\n thanks...");
return 0; // --> Missing
}
x++;
return (x=main());
}
答案 1 :(得分:1)
我执行了程序,它实际上按预期崩溃了。 递归调用不停止,当堆栈段没有更多空间时,就会发生这种情况。
您没有崩溃的原因是由于编译器的优化设置。它检测尾递归并将它们转换为非循环。