int fact(int n) {   //求n的阶乘

if(n < 0) 

  return 0

else if (n == 0)

  return 1;

else if (n == 1)

  return 1;

else

  return n*fact(n-1);

}

一般而言,在 X86 32位系统中,一次函数调用消耗的栈空间大约是:
4字节返回地址;
4*n字节的参数,n是参数个数;
12字节的寄存器保护区(EBP ESI EDI)
4*m字节局部变量,m 是声明在函数内部变量的个数
所以,对于楼主给出的实例,一次调用耗用的内存大小是
4+4*1+12=20字节
若递归 1000 次,大约耗 20KB 栈空间
若递归 10000 次,大约耗 200KB 栈空间

相关文章:

  • 2022-12-23
  • 2021-10-08
  • 2022-12-23
  • 2021-08-23
  • 2021-04-26
  • 2021-08-09
  • 2022-12-23
猜你喜欢
  • 2021-08-28
  • 2022-12-23
  • 2022-12-23
  • 2021-05-07
  • 2021-11-02
  • 2021-06-19
  • 2021-12-09
相关资源
相似解决方案