6-1 爆記憶體函式例項 (6分)
本題要求實現乙個遞迴函式,使用者傳入非負整型引數n,使用者依次輸出1到n之間的整數。所謂遞迴函式就是指自己呼叫自己的函式。
說明:
(1)遞迴函式求解問題的基本思想是把乙個大規模問題的求解歸結為乙個相對較小規模問題的求解,
小規模歸結為小小規模,以此類推,直至問題規模小至邊界(邊界問題可直接求解)。遞迴函式由兩
部分組成,一部分為遞迴邊界,另一部分為遞迴關係式。以求階乘函式為例,遞迴邊界factorial(1)=1;
遞迴公式: factorial(n)=n*factorial(n-1),它對應的遞迴函式如下:
int getfactorial(int n)
(2) 發生函式遞迴呼叫(自己呼叫自己)或者普通函式呼叫時,系統需要儲存呼叫發生前的執行場景信
息(包括呼叫發生前的各個變數取值資訊以及函式執行位置等),以便被調函式執行完畢後可以順利返
回並繼續執行後續操作。每次呼叫都需要儲存乙個場景資訊,儲存這些場景資訊需要的輔助空間的大小
與函式呼叫的次數呈正比,或者說其空間複雜度是o(n),當中n為呼叫次數。
(3)本例的目的是讓學生編寫乙個遞迴函式,並在自己的機器上測試遞迴呼叫次數達到多少時會發生記憶體
被爆而出現記憶體溢位的錯誤(我辦公室機器上設定引數為66000時會溢位)。同樣的這個問題,如果不
用遞迴函式而改用普通的迴圈語句解決問題,則不會出現記憶體溢位!
void printn (long n);
其中n為使用者傳入的引數。
在這裡給出函式被呼叫進行測試的例子。例如:
#include void printn(long n);
int main()
/* 請在這裡填寫答案 */
5
12345
**如下:
#include void printn(long n)
}
資料結構6 1 爆記憶體函式例項 6 分
本題要求實現乙個遞迴函式,使用者傳入非負整型引數n,使用者依次輸出1到n之間的整數。所謂遞迴函式就是指自己呼叫自己的函式。說明 1 遞迴函式求解問題的基本思想是把乙個大規模問題的求解歸結為乙個相對較小規模問題的求解,小規模歸結為小小規模,以此類推,直至問題規模小至邊界 邊界問題可直接求解 遞迴函式由...
6 73 爆記憶體函式例項 6分
在這裡插入 片6 73 爆記憶體函式例項 6分 本題要求實現乙個遞迴函式,使用者傳入非負整型引數n,使用者依次輸出1到n之間的整數。所謂遞迴函式就是指自己呼叫自己的函式。說明 1 遞迴函式求解問題的基本思想是把乙個大規模問題的求解歸結為乙個相對較小規模問題的求解,小規模歸結為小小規模,以此類推,直至...
第6章 6 1 函式基礎
6.1.2 函式宣告 乙個典型的函式定義包括以下幾個部分 返回型別 函式名字 由0個或多個形參組成的列表以及函式體。其中,形參以逗號隔開,形參列表位於一對圓括號之內。函式的呼叫完成兩項工作 1 用實參初始化函式對應的形參 2 將控制權轉移給被調函式。此時主調函式的執行被中斷,被調函式開始執行。舉個例...