關(guān)于遞歸調(diào)用棧需要空間大小分析

面試的時(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編譯器。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文地址:C語(yǔ)言函數(shù)調(diào)用棧(一)C語(yǔ)言函數(shù)調(diào)用棧(二) 0 引言 程序的執(zhí)行過(guò)程可看作連續(xù)的函數(shù)調(diào)用。當(dāng)一個(gè)函數(shù)執(zhí)...
    小豬啊嗚閱讀 4,967評(píng)論 1 19
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,644評(píng)論 18 399
  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡(jiǎn)單分配策略的問(wèn)題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 8,118評(píng)論 0 27
  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區(qū)別? C沒(méi)有Protection行為...
    阿面a閱讀 7,887評(píng)論 0 10
  • 昨天和奶奶通電話,談到了我的外曾祖母——她已故三年的老母親。而距離我最后一次見(jiàn)她,也已經(jīng)過(guò)去四年了。 外曾祖母是在...
    興盡語(yǔ)閱讀 1,384評(píng)論 0 7

友情鏈接更多精彩內(nèi)容