递归占用的栈内存有多大
C语言中,递归时使用栈内存。由于栈维护了每个函数调用的信息直到函数返回后才释放,这需要占用相当大的空间,尤其是程序中使用了许多递归调用的情况下。除此之外,因为有大量信息需要保存和恢复,因此生成和销毁栈帧需要耗费一定的时间。“相当大的空间”,大约在什么数量级?我一直没有具体的概念。以下C代码中
程序代码:
/* fact.c */ #include "fact.h" int fact(int n) { if(n < 0) return 0 else if (n == 0) return 1; else if (n == 1) return 1; else return n*fact(n-1); },大家可以帮我评估下吗?非常感谢!
假定分别执行fact(1000)和fact(10000)。