算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx

算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx

ID:59766773

大小:3.02 MB

頁數(shù):21頁

時間:2020-11-23

算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第1頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第2頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第3頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第4頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第5頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第6頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第7頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第8頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第9頁
算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx_第10頁
資源描述:

《算法基礎(chǔ)二Python遞歸算法解析ppt課件.pptx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、遞歸算法八大常用算法:枚舉遞歸二分算法分治算法動態(tài)規(guī)劃深度優(yōu)先搜索廣度優(yōu)先搜索貪心算法人理解迭代,神理解遞歸遞歸:指在函數(shù)的定義中使用函數(shù)自身的方法。”遞歸“表達了兩個意思:”遞“+”歸“,基本思想是把規(guī)模大的問題轉(zhuǎn)化為規(guī)模小的相似的子問題來解決。在函數(shù)實現(xiàn)時,因為解決大問題的方法和解決小問題的方法往往是同一個方法,所以就產(chǎn)生了函數(shù)調(diào)用它自身的情況。另外這個解決問題的函數(shù)必須有明顯的結(jié)束條件,這樣就不會產(chǎn)生無限遞歸的情況了遞歸應(yīng)用三步法:1).明確遞歸終止條件例如:當N=0時,遞歸終止2).給出遞歸終止時的處理辦法例如:ifn=0:return1

2、3).提取重復的邏輯,遞歸的一般式,縮小問題規(guī)模例如:returnn*f(n-1)例1:應(yīng)用三步法解決實際問題:階乘問題1).明確遞歸終止條件當N=0時,遞歸終止2).給出遞歸終止時的處理辦法ifn=0:return13).提取重復的邏輯,縮小問題規(guī)模重復的邏輯是:returnn*f(n-1)defjiecheng(n):ifn==0:return1else:returnn*jiecheng(n-1)zzshu=int(input('輸入待求的階乘的正整數(shù)'))print(zzshu,'的階乘是',jiecheng(zzshu))例2:應(yīng)用三步法

3、解決實際問題:斐波那契數(shù)列1).明確遞歸終止條件當N=1,或n=2時,遞歸終止2).給出遞歸終止時的處理辦法ifn==1orn==2:return13).提取重復的邏輯,縮小問題規(guī)模*重復的邏輯是:f(n)=f(n-1)+f(n-2)deffbnqsl(n):ifn==1orn==2:return1else:returnfbnqsl(n-1)+fbnqsl(n-2)zzshu=int(input('輸入待求的斐波那切數(shù)列的個數(shù)為'))print(zzshu,'個斐波那切數(shù)列的是')foriinrange(1,zzshu+1):print(fbnq

4、sl(i))例3:應(yīng)用三步法解決實際問題:稍微復雜一點的例題:漢諾塔問題法國數(shù)學家愛德華·盧卡斯曾編寫過一個印度的古老傳說:在世界中心貝拿勒斯(在印度北部)的圣廟里,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創(chuàng)造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有一個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸于盡。畫圖是分析問題的一

5、個好習慣1、先假設(shè)除最下面的盤子之外,我們已經(jīng)成功地將上面的63個盤子移到了b柱,此時只要將最下面的盤子由a移動到c即可。如圖:分解問題2、當最大的盤子由a移到c后,b上是余下的63個盤子,a為空。因此現(xiàn)在的目標就變成了將這63個盤子由b移到c。這個問題和原來的問題完全一樣,只是由a柱換為了b柱,規(guī)模由64變?yōu)榱?3。因此可以采用相同的方法,先將上面的62個盤子由b移到a,再將最下面的盤子移到c……3、要以B為輔助將A上64個盤子轉(zhuǎn)移到C上將c柱子作為輔助,把a上的63個圓盤移動到b上將a上最后一個圓盤移動到c這樣問題轉(zhuǎn)移成,接下來要以a為輔助,

6、將B上所有63盤子轉(zhuǎn)移到C上。defmove(n,a,b,c):#將A柱上N個盤子以B柱為輔助移動到C柱上ifn?==1:print(a,'--->',?c)#如果只有1個盤子,直接將A柱上的盤子移動到c柱上else:move(n-1,?a,?c,?b)#將N-1個盤子從A柱上以c柱為輔助移動到b柱上,這時a柱上只有當前最大一個盤子move(1,?a,?b,?c)#將a柱上剩下的這個最大的盤子從A柱上以b柱為輔助(實際用不上B柱)移動到c柱上,這時a柱為空move(n-1,?b,?a,?c)#將B柱上剩下的N-1個盤子以A柱為輔助,移動到C柱上m

7、ove(4,'A','B','C')遞歸習題1:八皇后問題:八重循環(huán)?體會遞歸之美!十九世紀著名的數(shù)學家高斯1850年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。遞歸習題2:波蘭表達式波蘭表達式是一種把運算符前置的算術(shù)表達式,例如普通的表達式2+3的逆波蘭表示法為+23。逆波蘭表達式的優(yōu)點是運算符之間不必有優(yōu)先級關(guān)系,也不必用括號改變運算次序,例如(2+3)*4的逆波蘭表示法為*+234。本題求解逆波蘭表達式的值,其中運算符包括+-*/四個。輸入輸入為一行,其中運

8、算符和運算數(shù)之間都用空格分隔,運算數(shù)是浮點數(shù)輸出輸出為一行,表達式的值。遞歸習題3:表達式計算輸入為四則運算表達式,僅由整數(shù)、+、-、*

當前文檔最多預覽五頁,下載文檔查看全文

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

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