美文网首页
关于递归调用栈需要空间大小分析

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

作者: 三三At你 | 来源:发表于2017-05-11 21:27 被阅读0次

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

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编译器。

相关文章

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

    面试的时候被问到了递归调用的问题 问当输入-1是需要栈空间多大计算方式如下经gcc编译器测试每次递归调用需要32B...

  • 高性能iOS应用开发 笔记02

    栈大小 每个线程都有专用的栈空间 栈可以在线程存在期间自由使用 可被递归调用的最大方法数 fun1里调用fun2,...

  • c c++ java堆栈空间内存

    1.C中栈空间是十分有限的。 测试环境VS2015Window10函数的递归调用要依赖栈空间,这也导致递归调用次数...

  • 记录不使用递归的斐波那契数列

    用普通的递归法会爆栈的原因是栈内存一般比较小, 而使用递归通常会向调用栈内加入大量的待调用函数, 超过调用栈的大小...

  • 尾递归

    尾递归 Lua尾递归的实现 爆栈问题 基于栈实现函数调用的语言都有栈空间的上限,这里拿几个语言举例 运行到2589...

  • 递归(recursion)

    基线条件(base case)&递归条件(recursive case) 递归条件基线条件 堆栈 调用栈 递归调用栈

  • JVM_JMM: StackOverFlow栈溢出

    使用递归演示,自己调用自己导致栈空间溢出,递归和回溯。源代码:MyTest3.java 通过设置VMOption:...

  • 递归调用太深,可能导致栈溢出

    栈溢出原因:因为每调用一个方法就会在栈上创建一个栈帧,方法调用结束后就会弹出该栈帧,而栈的大小不是无限的,所以递归...

  • python-翻转栈中的元素-递归法

    给定一个栈stack,利用较低的空间复杂度将栈中的元素位置翻转。 这里我用了两个递归实现,外层递归:每次调用除栈顶...

  • 算法--策略-递归

    函数直接或间接调用自身 函数的调用过程 如果递归调用没有终止, 将会一直消耗栈空间, 最终导致栈溢出 所以必须有一...

网友评论

      本文标题:关于递归调用栈需要空间大小分析

      本文链接:https://www.haomeiwen.com/subject/syjatxtx.html