关于递归调用栈需要空间大小分析

面试的时候被问到了递归调用的问题

int fun(int n)
{
if(n==1)
return 1;
return n*fun(n-1);
}

问当输入-1是需要栈空间多大计算方式如下
经gcc编译器测试每次递归调用需要32B的存储空间(一个int参数)
循环231后溢出变成(231)-1知道n=1共调用约2^32次
232乘32B=237B等于128GB
PS:这是当INT等于32位时的情况,int为16位时约需要2G。
PS2:参数会遵循内存对齐原则当有两个参数是占用48B,当三个参数时还是48B
以上测试与windows8下GCC编译器。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,935评论 1 19
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,100评论 18 399
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 8,072评论 0 27
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,878评论 0 10
  • 昨天和奶奶通电话,谈到了我的外曾祖母——她已故三年的老母亲。而距离我最后一次见她,也已经过去四年了。 外曾祖母是在...
    兴尽语阅读 1,374评论 0 7

友情链接更多精彩内容