本題要求實現乙個遞迴函式,使用者傳入非負整型引數n,使用者依次輸出1到n之間的整數。所謂遞迴函式就是指自己呼叫自己的函式。
說明:(1)遞迴函式求解問題的基本思想是把乙個大規模問題的求解歸結為乙個相對較小規模問題的求解,
小規模歸結為小小規模,以此類推,直至問題規模小至邊界(邊界問題可直接求解)。遞迴函式由兩
部分組成,一部分為遞迴邊界,另一部分為遞迴關係式。以求階乘函式為例,遞迴邊界factorial(1)=1;
遞迴公式: factorial(n)=nfactorial(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
void
printn
(long n)
}//根據提示用遞迴作答,而且是從小到大輸出。
6 1 爆記憶體函式例項 6分
6 1 爆記憶體函式例項 6分 本題要求實現乙個遞迴函式,使用者傳入非負整型引數n,使用者依次輸出1到n之間的整數。所謂遞迴函式就是指自己呼叫自己的函式。說明 1 遞迴函式求解問題的基本思想是把乙個大規模問題的求解歸結為乙個相對較小規模問題的求解,小規模歸結為小小規模,以此類推,直至問題規模小至邊界...
6 73 爆記憶體函式例項 6分
在這裡插入 片6 73 爆記憶體函式例項 6分 本題要求實現乙個遞迴函式,使用者傳入非負整型引數n,使用者依次輸出1到n之間的整數。所謂遞迴函式就是指自己呼叫自己的函式。說明 1 遞迴函式求解問題的基本思想是把乙個大規模問題的求解歸結為乙個相對較小規模問題的求解,小規模歸結為小小規模,以此類推,直至...
6 1 二分查詢 20分 PTA 資料結構
本題要求實現二分查詢演算法。函式介面定義 position binarysearch list l,elementtype x 其中list結構定義如下 typedef int position typedef struct lnode list struct lnode l是使用者傳入的乙個線性表...