版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、教學(xué)要求了解遞推算法的概念與各類遞推設(shè)計要領(lǐng)應(yīng)用遞推算法求解實際問題 第三章 遞 推1. 遞推的概念 遞推是計算機數(shù)值計算中的一個重要算法。思想是通過數(shù)學(xué)推導(dǎo),將復(fù)雜的運算化解為若干個重復(fù)的簡單運算,以充分發(fā)揮計算機善長重復(fù)處理的特點一、遞推概述 2. 遞推關(guān)系 遞推算法的首要問題是得到相鄰的數(shù)據(jù)項之間的關(guān)系,即遞推關(guān)系。 遞推關(guān)系是一種高效的數(shù)學(xué)模型,是遞推應(yīng)用的核心。 遞推關(guān)系不僅在各數(shù)學(xué)分支中發(fā)揮著重要的作用,由它所體現(xiàn)出來的遞推思想在各學(xué)科領(lǐng)域中更是顯示出其獨特的魅力。求解方法 找規(guī)律: a1=1 a2=1 a3=2=1+1=a1+a2 a4=3=1+2=a2+a3 a5=5=2+3=
2、a3+a4 a6=8=3+5=a4+a5 則有: an=an-2+an-1, a1=1,a2=1 有了這個遞推方程,程序就很簡單了。例:求斐波那契數(shù)列:1、1、2、3、5、8、的第n項。 3. 遞推的實施步驟(1)確定遞推變量遞推變量可以是簡單變量,也可以是一維或多維數(shù)組。 (2)建立遞推關(guān)系遞推關(guān)系是遞推的依據(jù),是解決遞推問題的關(guān)鍵。(3)確定初始(邊界)條件根據(jù)問題最簡單情形的數(shù)據(jù)確定遞推變量的初始(邊界)值,這是遞推的基礎(chǔ)。(4)對遞推過程進行控制遞推過程控制:遞推在什么時候結(jié)束,滿足什么條件結(jié)束。 4. 遞推算法框架描述 (1) 簡單順推算法 順推即從前往后推,從已求得的規(guī)模為1,2,
3、i-1的一系列解,推出問題規(guī)模為i的解,直至得到規(guī)模為n的解:f(1i-1)=; / 確定初始值 for(k=i;k=n;k+) f(k)=; / 根據(jù)遞推關(guān)系實施順推 print(f(n); / 輸出n規(guī)模的解f(n) (2) 簡單逆推算法 逆推即從后往前推,從已求得的規(guī)模為n,n1,i+1的一系列解,推出問題規(guī)模為i的解,直至得到規(guī)模為1的解:f(ni+1)=; / 確定初始值 for(k=i;k=1;k-) f(k)=; / 實施逆推 print(f(1);(3)較復(fù)雜的遞推問題需設(shè)置多重循環(huán)遞推。 例1:求斐波那契數(shù)列:1、1、2、3、5、8、的第n項。問題分析:斐波那契數(shù)列具有下列遞
4、推關(guān)系 an=an-2+an-1, a1=1,a2=1,q且其中n=3算法描述: int fib(int n) int i,f1=1,f2=1,f; for(i=3;i=n;i+) f=f1+f2; f1=f2; f2=f; if(n=1|n=2) return 1; else return f; 二、遞推算法實例1、輸出斐波那契數(shù)列:1、1、2、3、5、8、的前n項。( 每行輸出10個數(shù))2、求斐波那契數(shù)列:1、1、2、3、5、8、的前n項的和。思考:二、遞推算法實現(xiàn)實例例2:求n!。算法描述: int fact(int n) int i,s=1; for(i=1;i=n;i+) s=s*i
5、; return s; 二、遞推算法實現(xiàn)例3:求n!。算法描述: int fact(int n) int i,s=1; for(i=1;i3)(2) 確定初始條件f(1)=1;即1=1; f(2)=1;即2=1+1; f(3)=2;即3=1+1+1;3=31. 算法分析2. 算法描述 printf(請輸入臺階總數(shù)n:); scanf(%d,&n); f1=1;f2=1;f3=2; / 賦初值 for(k=4;k=n;k+) fk=fk-1+fk-3; / 實施遞推 printf(%d,fn); 3.2 水手分椰子 案例提出 五個水手來到一個島上,采了一堆椰子。一段時間后,第一個水手醒來,悄悄地
6、將椰子等分成五份,多出一個椰子,便給了旁邊的猴子,然后自己藏起一份,再將剩下的椰子重新合在一起。不久,第二名水手醒來,同樣將椰子等分成五份,恰好也多出一個,也給了猴子。然后自己也藏起一份,再將剩下的椰子重新合在一起。以后每個水手都如此分了一次并都藏起一份,也恰好都把多出的一個給了猴子。第二天,五個水手醒來,把剩下的椰子分成五份,恰好又多出一個,給了猴子。 問原來這堆椰子至少有多少個? 設(shè)置y數(shù)組,第i個水手藏椰子數(shù)為y(i)(i=1,2,5)個,第二天5個水手醒來后各分得椰子為y(6)個,依題意原來這堆椰子數(shù)為 x=5*y(1)+1 為了求取y(1),實施遞推。相鄰兩人所藏椰子數(shù)y(i)與y(
7、i+1)之間的關(guān)系為 4*y(i)=5*y(i+1)+1 (i=1,2,5) (3) 習(xí)慣按時間順序遞推,從y(i)推出y(i+1),即 y(i+1)=(4*y(i)-1)/5 (i=1,2,5) (4)1. 算法分析 第二個問題,遞推何時結(jié)束? 問題本身沒有邊界條件限制,只要求上面5個遞推方程所涉及的6個量y(i)都是正整數(shù)。也就是說,若有6個整數(shù)y(i)滿足5個方程4*y(i)=5*y(i+1)+1,(i=1,2,5)即為一個解。 首先y(1)賦初值k(取值從1開始遞增)后推出y(2),由y(2)推出y(3),依此經(jīng)5次遞推得y(6)。如果某一次推出的不是整數(shù),則中止繼續(xù)往后推,返回k增1后賦值給y(1),從頭開始。如果5次遞推都是整數(shù),則輸出原有椰子數(shù)5*y(1)+1后結(jié)束。 2. 算法描述int i; double k,x,y7;i=1;k=1.0;y1=k;while(i=5) i+;yi=(4*yi-1-1)/5; if(yi!=(int)yi) k=k+1.0;y1=k;i=1; x=5*y1+1;printf(原有椰子至少有:%6.0f個.n,
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度消防安全教育培訓(xùn)合同6篇
- 2024年生態(tài)環(huán)境保護與修復(fù)項目承攬合同
- 2024年砂石材料市場分析與預(yù)測服務(wù)合同
- 云南省景洪市第三中學(xué)2014-2021學(xué)年高二上學(xué)期期末考試生物試題(掃描版)
- 2024年私人航天飛行服務(wù)合同
- 防沙治沙工程的設(shè)計與施工考核試卷
- 醫(yī)療數(shù)據(jù)安全隱私保護-洞察分析
- 微生物代謝途徑解析-第1篇-洞察分析
- 鴨產(chǎn)業(yè)鏈產(chǎn)業(yè)鏈金融風(fēng)險防范-洞察分析
- 吊裝協(xié)議書范文
- DB31T 1238-2020 分布式光伏發(fā)電系統(tǒng)運行維護管理規(guī)范
- 化妝品不良反應(yīng)監(jiān)測培訓(xùn)課件
- 分包計劃范文
- 個人住房質(zhì)押擔(dān)保借款合同書范本(3篇)
- 亞馬遜品牌授權(quán)書(英文模板)
- DB52∕T 046-2018 貴州省建筑巖土工程技術(shù)規(guī)范
- 醫(yī)療電子票據(jù)管理系統(tǒng)建設(shè)方案
- 火箭發(fā)動機課件-
- 人教版小學(xué)六年級數(shù)學(xué)上冊教學(xué)反思(46篇)
- atv61變頻器中文手冊
- 農(nóng)業(yè)機械維修業(yè)開業(yè)技術(shù)條件
評論
0/150
提交評論