c语言函数最大能递归的次数多少


date 2020/3/24

int main(){
main();
}

这是一小段c代码,但是,main函数不能被除系统之外的东西调用,这属于UB行为
它如何运行完全靠编译器,所以我不会这样写。

#include <stdio.h>
void Main(unsigned long long t);
int main()
{
Main(0);
}
void Main(unsigned long long t)
{printf("第%llu次递归\n",t);Main(++t);
}

这样写才不会被编译器报UB行为。




运行这段代码

显然,我们可以得到c语言函数最大能递归的次数是43179
但是请注意右角的程序异常返回值

程序异常退出了。

再用 www.onlinegdb.com 运行一下代码
神奇的事情发生了:

相同的代码,运行结果竟然是不同的。
从异常返回值我们可以推断,程序堆栈溢出了。
得出结论:
不同的系统,程序堆栈大小不同,可递归的次数也就不同,c语言函数最大能递归的次数是未知的。
而C语言本身没有限制。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM