版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
用遞歸法解決問題
教學(xué)重點(diǎn)(1)了解遞歸現(xiàn)象和遞歸算法的特點(diǎn)。(2)自定義函數(shù)及遞歸算法的自定義函數(shù)實(shí)現(xiàn)。(3)培養(yǎng)“自頂向下”、“逐步求精”的意識。
教學(xué)難點(diǎn)(1)遞歸過程思路的建立。(2)判斷問題是否適于遞歸解法。(3)正確寫出遞歸程序。
遞歸算法遞歸算法作為計(jì)算機(jī)程序設(shè)計(jì)中的一種重要的算法,是較難理解的算法之一。簡單地說,遞歸就是編寫這樣的一個(gè)特殊的過程,該過程體中有一個(gè)語句用于調(diào)用過程自身(稱為遞歸調(diào)用)。遞歸過程由于實(shí)現(xiàn)了自我的嵌套執(zhí)行,使這種過程的執(zhí)行變得復(fù)雜起來,其執(zhí)行的流程可以用圖1所示。遞歸算法調(diào)用子程序的含義
在過程和函數(shù)的學(xué)習(xí)中,我們知道調(diào)用子程序的一般形式是:主程序調(diào)用子程序A,子程序A調(diào)用子程序B,如圖如示,這個(gè)過程實(shí)際上是遞歸的定義:
一個(gè)函數(shù)在定義時(shí),地調(diào)用了自己,這種算法在程序設(shè)計(jì)中統(tǒng)稱為遞歸法。函數(shù)A函數(shù)B類型二函數(shù)A類型一直接或者間接遞歸算法遞歸是一種直接或者間接地調(diào)用自身的算法。在計(jì)算機(jī)編寫程序中,遞歸算法對解決一大類問題是十分有效的,它往往使算法的描述簡潔而且易于理解。
例(1)利用遞歸方法編寫一求N的階乘程序。分析:根據(jù)N!=N*(N-1)*(N-2)*(N-3)*……*3*2*1
可以推出下列式子:
這是一個(gè)典型的遞歸算法,參考程序如下:FunctionFa(ByValnAsInteger)AsLongIfn=1ThenFa=1ElseFa=n*Fa(n-1)EndIfEndFunctionPrivateSubForm_Click()DimnAsIntegern=Val(InputBox("輸入正整數(shù)N:","N!"))Print"輸入的正整數(shù)是";n;Print",階乘是";Fa(n)EndSub程序代碼自定義函數(shù)的定義格式:Functionprocedurename(arguments)[Astype]StatementsEndFunction其中:procedurename是函數(shù)名,
arguments是函數(shù)中的參數(shù)表,
type是函數(shù)返回值的數(shù)據(jù)類型,
statements是過程中的代碼調(diào)用函數(shù)的格式:Procedurename(arguments)分析:可以推出下列式子:
1月2月3月4月5月6月7月8月9月10月11月12月小兔1
11235813213455大兔
1123581321345589合計(jì)1123581321345589144例(2)斐波那契(Fibonacci)數(shù)列
“兔子問題”:假定小兔子一個(gè)月就可以長成大兔子,而大兔子每個(gè)月都會生出一對小兔子。如果年初養(yǎng)了一對小兔子,問到年底時(shí)將有多少對兔子?FunctionFb(ByValNAsInteger)AsLong
IfN<3ThenFb=1ElseFb=Fb(N-1)+Fb(N-2)EndIfEndFunctionPrivateSubCommand1_Click()
N=Val(Text1.Text)
Text2.Text="第"&N&"月的兔子數(shù)目是:"&Fb(N)EndSub程序代碼分析:第一階第二階第三階例(3)爬樓梯樓梯一共有N個(gè)臺階,小明爬樓梯的方法是一步跨一個(gè)臺階或者一步跨兩個(gè)臺階,于是小明開始爬樓,爬上樓以后小明提了一個(gè)問題:按剛才那樣,爬完臺階一共有多少種可能的爬法?第一階只有一種爬法:跨一步1種第二階有兩種爬法:每次只跨1步或者跨2步2種第三階有三種爬法:有可能來自第一階,也有可能來自第二階3種思考:那第四階,第五階有多少種爬法呢那第n階有多少種爬法呢?假設(shè)g(n)表示第n個(gè)臺階的爬法由數(shù)學(xué)知識可得遞歸關(guān)系式:ng(n-1)+g(n-2)n>2n≤2g(n)=遞歸程序如下:Privatefunctiong(byvalnasinteger)Ifn=1orn=2theng=nElseg=g(n-1)+g(n-2)EndifEndfunction思考g(n)與g(n-1)、g(n-2)關(guān)系任務(wù):1、寫出遞歸公式2、完成程序代碼小結(jié):遞歸算法的特點(diǎn):
遞歸過程:
一般通過函數(shù)或子過程來實(shí)現(xiàn)。
遞歸算法:
在函數(shù)或子過程的內(nèi)部,直接或者間接地調(diào)用自己的算法。遞歸算法的實(shí)質(zhì):
是把問題轉(zhuǎn)化為規(guī)??s小了的同類問題的子問題。
然后遞歸調(diào)用函數(shù)(或過程)來表示問題的解。
小結(jié):一個(gè)應(yīng)用遞歸算法解決的問題經(jīng)典例子傳說在古代印度的貝拿勒斯神廟,有一塊黃銅板上插了3根寶石柱,在其中一根寶石柱自上而下由小到大地疊放著64個(gè)大小不等的金盤。一名僧人把這些金盤從一根寶石柱移到另外一根上。僧人在移動(dòng)金盤時(shí)遵守下面3條規(guī)則:第一,一次只能移動(dòng)一個(gè)金盤。第二,每個(gè)金盤只能由一根寶石柱移到另外一根寶石柱。第三,任何時(shí)候都不能把大的金盤放在小的金盤上。神話說,如果僧人把64個(gè)金盤完全地從一根寶石移到了另外一根上,世界的末日就要到了。當(dāng)然,神話只能當(dāng)故事來聽,世界不可以因?yàn)閭€(gè)別人的活動(dòng)而導(dǎo)致末日。不過,從僧人搬完64個(gè)金盤所需時(shí)間的角度來說,即使僧人每秒都能移動(dòng)一個(gè)金盤,那也得要幾千億年!分析問題我們把3根寶石柱分別命名為A、B、C。最初有N個(gè)金盤放在A,需要把它們?nèi)堪匆?guī)則移動(dòng)到B。當(dāng)N=1時(shí),直接把金盤從A搬到B就可以了,1次成功。當(dāng)N≥2,那么需要利用C柱來過渡。我們假設(shè)已經(jīng)找到一種把N-1個(gè)金盤從一根柱搬到另外一根柱的方法,那么,我們只要把N-1個(gè)金盤從A搬到C,然后把最大的金盤從A搬到B,最后把C上的N-1個(gè)金盤搬到B就可以了??窟f歸的思想,我們輕而易舉地完成了整個(gè)搬動(dòng)。設(shè)計(jì)算法
我們定義一個(gè)過程Hanoi(N,A,B,C),表示有N個(gè)金盤需要從A柱搬到B柱(以C柱為過渡)。那么完成它只需3步:①Hanoi(N-1,A,C,B)它的意思是把A柱上的N-1個(gè)金盤搬到C柱;②
A→B
它的意思是把一個(gè)(最大的)金盤從A柱搬到B柱;③
Hanoi(N-1,C,B,A)它的意思是把c柱上的N-1個(gè)金盤搬到B柱。子程序PrivateSubHanoi(nAsInteger,ByValAAsString,ByValBAsString,ByValCAsString,tAsLong)Ifn=1ThenText3.Text=Text3.Text+A+"→"+B+“"t=t+1增加變量t用來統(tǒng)計(jì)移動(dòng)次數(shù)。Else
CallHanoi(n-1,A,C,B,t)
Text3.Text=Text3.Text+A+"→"+B+“"
t=t+1
CallHanoi(n-1,C,B,A,t)EndIfEndSub主程序PrivateSubCommand1_Click()
DimtAsLong,nAsInteger
t=0
n=Val(Text1.Text)
A="A":
B="B":
C="C"
CallHanoi(n,A,B,C,t)
Text2.Text=tEndSub小結(jié)遞歸算法所體現(xiàn)的“重復(fù)”一般有三個(gè)要求
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年化療藥物供應(yīng)合同
- 2025年宇宙探索擔(dān)保協(xié)議
- 2025年商鋪抵押借款轉(zhuǎn)換托管協(xié)議
- 2025年度木地板施工與室內(nèi)裝修一體化合同4篇
- 2025年壁球館特許經(jīng)營合同
- 2025年體育館用水合同
- 二零二五版水資源合理化利用建議書范本3篇
- 2024云南公務(wù)員考試行測真題(行政執(zhí)法類)
- 2025版委托代理企業(yè)交稅及稅收籌劃與申報(bào)合同6篇
- 2024經(jīng)濟(jì)合同范本
- 城市微電網(wǎng)建設(shè)實(shí)施方案
- 企業(yè)文化融入中華傳統(tǒng)文化的實(shí)施方案
- 9.1增強(qiáng)安全意識 教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
- 《化工設(shè)備機(jī)械基礎(chǔ)(第8版)》全套教學(xué)課件
- 人教版八年級數(shù)學(xué)下冊舉一反三專題17.6勾股定理章末八大題型總結(jié)(培優(yōu)篇)(學(xué)生版+解析)
- 2024屆上海高考語文課內(nèi)古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 初中數(shù)學(xué)要背誦記憶知識點(diǎn)(概念+公式)
- 駕照體檢表完整版本
- 農(nóng)產(chǎn)品農(nóng)藥殘留檢測及風(fēng)險(xiǎn)評估
- 農(nóng)村高中思想政治課時(shí)政教育研究的中期報(bào)告
評論
0/150
提交評論