面試的時(shí)候被問(wèn)到了遞歸調(diào)用的問(wèn)題
int fun(int n)
{
if(n==1)
return 1;
return n*fun(n-1);
}
問(wèn)當(dāng)輸入-1是需要??臻g多大計(jì)算方式如下
經(jīng)gcc編譯器測(cè)試每次遞歸調(diào)用需要32B的存儲(chǔ)空間(一個(gè)int參數(shù))
循環(huán)231后溢出變成(231)-1知道n=1共調(diào)用約2^32次
232乘32B=237B等于128GB
PS:這是當(dāng)INT等于32位時(shí)的情況,int為16位時(shí)約需要2G。
PS2:參數(shù)會(huì)遵循內(nèi)存對(duì)齊原則當(dāng)有兩個(gè)參數(shù)是占用48B,當(dāng)三個(gè)參數(shù)時(shí)還是48B
以上測(cè)試與windows8下GCC編譯器。