c語言--函數(shù)的遞歸調(diào)用.ppt

ID:48031616

大?。?83.50 KB

頁數(shù):16頁

時間:2020-01-13

c語言--函數(shù)的遞歸調(diào)用.ppt_第1頁
c語言--函數(shù)的遞歸調(diào)用.ppt_第2頁
c語言--函數(shù)的遞歸調(diào)用.ppt_第3頁
c語言--函數(shù)的遞歸調(diào)用.ppt_第4頁
c語言--函數(shù)的遞歸調(diào)用.ppt_第5頁
資源描述:

《c語言--函數(shù)的遞歸調(diào)用.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、張福祥主編遼寧大學(xué)出版社C語言程序設(shè)計1計算機(jī)科學(xué)系陳垚我們先看這樣一個例子:說有一只調(diào)皮的小猴子,摘了一堆水果,第一天吃了水果的一半,又多吃了一個;第二天吃了剩下水果的一半,又多吃了一個;依次類推….到第十天,發(fā)現(xiàn)只剩下了1個水果,請問這只猴子到底摘了多少個水果?2計算機(jī)科學(xué)系陳垚一、函數(shù)遞歸的特點5.4函數(shù)遞歸調(diào)用后一部分與原始問題類似后一部分是原始問題的簡化1、定義:調(diào)用一個函數(shù)時直接或間接調(diào)用自身,稱之為函數(shù)的遞歸。2、一個問題能夠成為遞歸必須具備的條件是:許多數(shù)學(xué)函數(shù)都是用遞歸的形式定義的:3計算機(jī)科學(xué)系陳垚1.直接遞歸調(diào)用:函數(shù)直接調(diào)用本身二、程序中的遞歸方式

2、2.間接遞歸調(diào)用:函數(shù)間接調(diào)用本身4計算機(jī)科學(xué)系陳垚說明C語言對遞歸函數(shù)的自調(diào)用次數(shù)沒有限制必須有遞歸結(jié)束條件intf(x)intx;{inty,z;……z=f(y);……return(2*z);}直接調(diào)用間接調(diào)用intf1(x)intx;{inty,z;……z=f2(y);……return(2*z);}intf2(t)intt;{inta,c;……c=f1(a);……return(3+c);}5計算機(jī)科學(xué)系陳垚思考如下問題:例1:有5個人坐在一起,問第5個人多少歲,他說比第4個人大2歲;問第4個人歲數(shù),他說比第3個人大2歲;問第3個人,又說比第2個大2歲;問第2個人,說

3、比第1個人大2歲;最后問第1個人,他說他10歲;請問第5個人多大?比她大2歲比她大2歲比她大2歲比她大2歲我10歲6計算機(jī)科學(xué)系陳垚age(5)=16+2=18age(4)=14+2=16age(3)=12+2=14age(2)=10+2=1210(n=1)age(n)=age(n-1)+2(n>1)設(shè)age表示年齡,則有如下:age(5)=age(4)+2age(4)=age(3)+2age(3)=age(2)+2age(2)=age(1)+2age(1)=107計算機(jī)科學(xué)系陳垚main(){printf(“%d”,age(5));}age(intn){intc;if(

4、n==1)c=10;elsec=age(n-1)+2;return(c);}age(5)c=10n=1c=age(3)+2n=4c=age(2)+2n=3c=age(1)+2n=2c=age(4)+2n=5c=10+2=12c=12+2=14c=14+2=16c=16+2=188計算機(jī)科學(xué)系陳垚例2:漢諾塔(Hanoi)問題BC問題:將A塔上n個盤子移至C(借助于B)。移動時,保證三個塔始終是大盤在下,小盤在上,并且每次只能移動一個盤子。An個盤子9計算機(jī)科學(xué)系陳垚必須用遞歸方式解決1)先將A塔n–1個盤子借助于C移至B上2)將A上剩下的一個移至C上.3)將B上n–1個盤

5、子借助于A移至C上.可以看到:1)、3)為同一問題,都為n–1個盤子借助于一個空塔移至另一塔上。10計算機(jī)科學(xué)系陳垚ABC例Hanoi問題11計算機(jī)科學(xué)系陳垚voidmove(chargetone,charputone){printf("%c--->%c",getone,putone);}voidhanoi(intn,charA,charB,charC){if(n==1)move(A,C);else{hanoi(n-1,A,C,B);move(A,C);hanoi(n-1,B,A,C);}}main(){intn;scanf("%d",&n);hanoi(n,‘A',

6、‘B',‘C');}程序如下:ABCABCABCABC12計算機(jī)科學(xué)系陳垚inputthenumberofdiskes:3?Thesteptomoving3diskes:A??>CA??>BC??>BA??>CB??>AB??>CA??>C運行情況如下:13計算機(jī)科學(xué)系陳垚?move(getone,putone)表示從getone塔移一個盤子至putone塔?hanoi(n,one,two,three)表示n個盤子從one塔借助于two塔(空)移至three塔,調(diào)用時塔用字符常量'A','B','C'表示。在程序中有兩個函數(shù):14計算機(jī)科學(xué)系陳垚小結(jié)1.函數(shù)遞歸的定義2.

7、函數(shù)遞歸的特點3.函數(shù)遞歸調(diào)用的方式本節(jié)課主要介紹的內(nèi)容:15計算機(jī)科學(xué)系陳垚上機(jī)作業(yè):說有一只調(diào)皮的小猴子,摘了一堆水果,第一天吃了水果的一半,又多吃了一個;第二天吃了剩下水果的一半,又多吃了一個;依次類推….到第十天,發(fā)現(xiàn)只剩下了10個水果,請問這只猴子到底摘了多少個水果?1(n=10)num(n)=2*(num(n+1)+1)(n<10)16計算機(jī)科學(xué)系陳垚

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。
关闭