面试的时候被问到了递归调用的问题
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编译器。