C 输出窗口卡在黑屏上 #包括 int main() { 静态int x; 如果(x==10) printf(“\n谢谢…”); x++; 返回(x=main()); }

C 输出窗口卡在黑屏上 #包括 int main() { 静态int x; 如果(x==10) printf(“\n谢谢…”); x++; 返回(x=main()); },c,recursion,tail-recursion,C,Recursion,Tail Recursion,在运行程序时,它会在输出上卡住: 谢谢 这里有什么问题?此递归没有终止条件。因此,将引导您到-a- 也许这就是你想要尝试的: #include<stdio.h> int main() { static int x; if(x == 10) printf("\n thanks..."); x++; return (x=main()); } #包括 内部主(空) { 静态int x; 如果(x==10) { printf(“\n谢谢…”); 返

在运行程序时,它会在输出上卡住:

谢谢


这里有什么问题?

此递归没有终止条件。因此,将引导您到-a-

也许这就是你想要尝试的:

#include<stdio.h>

int main()
{
    static int x;
    if(x == 10)
    printf("\n thanks...");
    x++;
    return (x=main());
}
#包括
内部主(空)
{
静态int x;
如果(x==10)
{
printf(“\n谢谢…”);
返回0;//-->缺少
}
x++;
返回(x=main());
}

此递归没有终止条件。因此,将引导您到-a-

也许这就是你想要尝试的:

#include<stdio.h>

int main()
{
    static int x;
    if(x == 10)
    printf("\n thanks...");
    x++;
    return (x=main());
}
#包括
内部主(空)
{
静态int x;
如果(x==10)
{
printf(“\n谢谢…”);
返回0;//-->缺少
}
x++;
返回(x=main());
}

我执行了这个程序,它实际上按预期崩溃了。 递归调用不停地进行,当堆栈段没有更多空间时,就会发生这种情况


没有崩溃的原因是编译器的优化设置。它检测尾部递归并将其转换为非无限循环。

我执行了该程序,它实际上按预期崩溃了。 递归调用不停地进行,当堆栈段没有更多空间时,就会发生这种情况


没有崩溃的原因是编译器的优化设置。检测尾部递归并将其转换为非无限循环。

出于某种原因,您是否反对使用附加函数?为什么要递归调用
main
,而不是将逻辑分解成单独的函数?出于某种原因,您是否反对使用其他函数?为什么要递归调用
main
,而不是将逻辑分解成单独的函数?