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语言本身没有限制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值