




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
非數值計算Non-numericCalculations朔州市實驗中學校李娜目標運用合適的算法形成解決問題的方案。GOALS體驗遞歸算法,并結合具體問題開展編程實踐。了解算法設計中的分治思想,并運用二分查找解決實際問題。計算的一定是數嗎?導入①計算一定是數嗎?除了數還有什么?這些屬于數值計算嗎?計算一定是數嗎?01除了數還有什么?0203這些屬于數值計算嗎?導入在數值計算中,我們更多考慮的是“數”,但計算應該是一個更廣泛的領域。計算的對象可以是自然界和人類社會的一切事物。更確切地說,計算的對象可以是某些信息,如數據、文字、語言、圖形、知識、事物的運動過程及思維過程。如果說數值計算主要探討數學問題的話,那么非數值計算更多探討"算法”問題。
在解決非數值類計算問題時,一些基礎的思維方式可以借鑒,如分治、遞歸、解析等。分治算法:重要的二分法分治策略②
小問題小問題小問題難以解決的較大問題小問題小問題分治策略分治的設計思想,是將個難以直接解決的大問題,分割成些較小的同類問題,各個擊破,最終達到解決問題的目的。二分查找實際上一就是分治策略的種典型運用。二分查找二分直接二分查找importrandomx=random.randint(1,1000)while0<x<1000:y=int(input("請輸入這個數:"))ifx<y:print("大了")elifx>y:print("小了")else:print("就是",x)breakrandom包可以稱為隨機包,它有如下函數:random.randint(1,10)#產生1到10的一個整數型隨機數random.random()#產生0到1之間的隨機浮點數random.uniform(1.1,5.4)#產生1.1到5.4之間的隨機浮點數,區間可以不是整數random.choice('tomorrow')#從序列中隨機選取一個元素random.randrange(1,100,2)#生成從1到100的間隔為2的隨機整數小游戲:如何找出1-1000之間的某個數?
二分查找二分查找又叫折半查找,該方法主要將數列有序排列,采用跳躍式的方式查找數據。以遞增數列為例,先以中點位置的元素作為比較對象,如果要找的元素值小于該中點元素,則將待查序列縮小為左半部分,否則為右半部分。每一次比較后可以將查找區域縮小一半。第一次分割第二次分割第三次分割二分查找x=int(input("請輸入要查找的整數:"))step=0low=1high=1000while(low<=high):mid=(low+high)//2step=step+1ifmid>x:high=mid-1elifmid<x:low=mid+1else:breakprint("查找次數為:",step)input("運行完畢,請按回車鍵退出...")思考:如果輸入的數據不在范圍內,會出現什么結果呢?程序還需要在哪些地方進行完善?二分查找x=int(input("請輸入要查找的數據:"))step=0 #記錄查找次數flag1=1 #目標區域左邊界flag2=1000 #目標區域右邊界ifflag1<=x<=flag2:while(flag1<=flag2):mid=(flag1+flag2)//2step=step+1ifmid>x:flag2=mid-1elifmid<x:flag1=mid+1else:breakprint("查找次數為:",step) #輸出次數else:print("查詢超出范圍。")思考:如果輸入的數據不在范圍內,會出現什么結果呢?程序還需要在哪些地方進行完善?③遞歸算法玩轉“漢諾塔”小游戲有一個印度的古老傳說:在世界中心貝拿勒斯(在印度北部)的圣廟里,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有一個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸于盡。漢諾塔游戲思考:假設移動一次需要1秒,共需多長時間呢?一個平年365天有31536000秒,閏年366天有31622400秒,平均每年31556952秒,計算一下:移動3個木盤的方法是:根據木盤疊放規則,要使A桿上最大的木盤(記為x)移動到C桿上(子問題1,如圖第4步),必須先把x上方的所有木盤移動到B桿上(子問題2,如圖4中的前3步),然后再將B桿上所有的木盤移動到C桿上(子問題3,如圖中的后3步)。漢諾塔游戲3個木盤的移動問題成功解決了,就可以解決更多木盤的移動問題了。第1步:A→C第2步:A→B第3步:C→B第4步:A→C第5步:B→A第6步:B→C第7步:A→C將n個木盤從A桿移動到C桿,需要借助中間的B桿。只要超過一個木盤,在移動過程中,總會存在起始桿、過渡桿及目標桿的問題。因此,定義函數時,用到了4個參數:hanoi(n,A,B,C),n表示需要移動的盤子數量,A表示盤子的起始桿,B表示中間過渡桿,C表示目標桿,如圖4所示。漢諾塔游戲起始桿A過渡桿B盤子數n目標桿Chanoi(盤子數,起始桿,過渡桿,目標桿)漢諾塔游戲hanoi(n,A,B,C)從A移到Chanoi(n-1,B,A,C)hanoi(n-1,A,C,B)前n-1個木盤從A移動到了B前n-1個木盤從B移動到了C漢諾塔遞歸過程圖示漢諾塔游戲defhanno(n,s,m,t):#定義一個函數,n層塔,將盤子從s借助m移動到tifn==1:print(s,'-->',t)#將一個盤子從s移動到telse:hanno(n-1,s,t,m)#將前n-1個盤子從s移動到m上
print(s,'-->',t)#將最底下的最后一個盤子從s移動到t上
hanno(n-1,m,s,t)#將m上的n-1個盤子移動到t上#主程序n=int(input('請輸入漢諾塔的層數:'))hanno(n,'A','B','C')input("運行完畢,請按回車鍵退出...")代碼實現2個金片,移動幾次漢諾塔游戲4個金片,移動幾次5個金片,移動幾次3個金片,移動幾次3次15次31次7次一種思維模式,抽象表達的手段,求解問題的方法。直接或間接地調用自身的方法,可以簡單類比為具有自相似性重復的事物。基本思想:把規模較大的問題層層轉化為規模較小的同類問題求解遞歸算法舉例:斐波那契數列“1,1,2,3,5,8…”可定義為數學領域的遞歸算法用函數自身來定義該函數“分”“治””合”(1)分:將原問題分解成K個子問題。(2)治:對這K個子問題分別求解。如果子問題的規模仍然不夠小,則將其再分解為K個子問題,如此進行下去,直到問題足夠小時,就很容易求出子問題的解。(3)合:將求出的小規模問題的解合并為一個更大規模問題的解,自下而上逐步求出原問題的解遞歸的重要組成遞推關系、邊界條件(保證遞歸能在有限次計算后得出結果,而不會產生無限循環地情況)遞歸算法分治(二分法)+遞歸課堂測試④總結CONTRACTEDPUREANDFRESHWealthislikewater.Ifit'saglassofwater,youcane
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園食堂食品安全教育
- 12.2 用統計圖描述數據 習題課件
- 課程論與教學論的關系
- 行業管理軟件的發展趨勢
- 安全教育課:不跟陌生人走
- 痛風病人的護理和措施
- 身邊產品設計的創意與靈感
- 年產18GW光伏新能源核心零部件項目可行性研究報告-立項備案
- 未足月胎兒窘迫護理查房
- 小作坊餐飲加盟合同協議
- 廣州市黃埔區教育局招聘事業編制教職員考試真題2024
- 國際經濟學(下冊國際金融)克魯格曼-中文答案
- 2025年寧夏銀川市唐徠中學南校區中考一模英語試題(原卷版+解析版)
- 鄉村民宿開發管理運營手冊
- 殯葬服務筆試題庫及答案
- 2025年光大銀行校園招聘筆試參考題庫(帶答案)
- 中醫康復理療師職業指導試題及答案
- 全過程工程咨詢投標方案(技術方案)
- 研究生教育高質量發展新動能推動方案
- 寧波十校2025屆高三3月聯考語文試卷(含答案解析)
- 在線網課學習課堂《人工智能(北理 )》單元測試考核答案
評論
0/150
提交評論