第 5 章 遞迴.

Slides:



Advertisements
Similar presentations
發現生命的力量 — 陳樹菊阿嬤,來了 … 《不凡的慷慨》書籍賞析. 你所知道的陳樹菊  2010 《富比世》雜誌亞洲慈善英雄! 2010 美國《時代》雜誌最具影響力百大人物! 《讀者文摘》亞洲英雄!  導演李安﹕「她的生活稱不上富裕,仍然陸續捐贈 了將近一千萬台幣幫助數個不同的單位 … 」
Advertisements

1 教師敘薪 Q & A 教師敘薪 Q & A 新竹縣立新湖國中 陳淑芬 新竹縣立自強國中 楊美娟
103 學年度縣內介聘申請說明會 南郭國小 教務主任張妙芬.  重要作業日程 : 1 、 5/1( 四 ) 前超額學校 ( 含移撥超額 ) 備文函報縣府教 育處輔導介聘教師名單 2 、 5/7( 三 ) 超額教師積分審查( 9 : : 00 、 13 : : 00 )。 3.
大學甄選申請入學 〃備審資料 〃面試. 確認你的追求對象 學校環境概況 系別特質 有無交換學生 未來出路 性質相似的科系要清楚之間的差別 ex: 社會福利學系,社會工作學系, 社會學系.
人文行動考察 羅東聖母醫院 老人醫療大樓 吳采凌 黃玨宸 劉映姍 陳嫚萱.
焦點 1 陸域生態系. 臺灣的陸域生態系 臺灣四面環海 黑潮通過  高溫, 雨量充沛 熱帶, 亞熱帶氣候.
資源問題與環境保育 第 6 章. 學完本章我能 ……  知道中國土地資源的問題與保育  了解中國水資源的問題與保育  知道中國森林資源的問題與保育  能分析自然環境和人文環境如何影響人類 的生活型態  說舉出全球面臨與關心的課題.
While 迴圈 - 不知重複執行次數
景美樣品房工程變更 / 追加請款 / 說明 102/08/09 樣品房停工 102/10/10 樣品房完工 102/09/26 向工務部提出 追加工程估價單 102/10/25 經工務部審核 轉送採發部門 102/09/03 工地會議 確認後續施工方式 102/11/ /11/ /12/09.
統計之迷思問題 保險 4B 張君翌. 迷思問題及教學者之對策 常見迷思概念教學者之對策 解題的過程重於答案 例 : 全班有 50 位同學,英文不及格的有 15 人,數學不及格的有 19 人,英文與 數學都及格的有 21 人。請問英文與數 學都不及格的有幾人? 老師常使用畫圖來解決這樣的問題,英文和.
淺談學校差勤事宜 報告人 臺中市北屯區文心國小 王賜壽 102年6月13日.
101北一女中 資訊選手培訓營 遞迴、河內塔與merge sort Nan.
從閱讀擺渡到寫作 高雄女中 楊子霈.
两汉文学及汉代诗歌.
近现代文学概说.
一、亞洲位置 北極海 北亞 歐洲 太平洋 黑海 中亞 地中海 東亞 東北亞 西亞 南亞 非洲 東南亞 印度洋 圖2-5-1亞洲分區圖.
热爱党、热爱祖国、热爱人民 泉州九中初二年(10)班主题班会.
蘭亭集序 第一段 永和九年,歲在癸丑,暮春之初,會于會稽山陰之蘭亭,脩禊事也。群賢畢至,少長咸集。此地有崇山峻嶺,茂林脩竹,又有清流激湍,映帶左右。引以為流觴曲水,列坐其次。雖無絲竹管絃之盛,一觴一詠,亦足以暢敘幽情。
黄金分割理论在股市中的应用 包头营业部.
5.1 一些一些遞迴的基本範例 5.2 一個典型的遞迴範例:河內塔 5.3 另一個範例:八個皇后 5-4 何時不要使用遞迴?
计算学科的基本问题 本章首先介绍一个对问题进行抽象的典型实例——哥尼斯堡七桥问题。然后,通过“梵天塔”问题和“停机问题”分别介绍学科中的可计算问题和不可计算问题。从“梵天塔”问题再引出算法复杂性中的难解性问题、P类问题和NP类问题,证比求易算法,P=NP是否成立的问题。
公會組織糾紛 指導老師:柯伶玫 組員 495B0065 劉致維 495B0072 廖怡塵 495B0097 范家皓.
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
學校:臺中市立大業國民中學 領域:語文學習領域(國語文) 作者:林瑩貞
第五单元 群星闪耀 复法指导 阅读与欣赏 单元重点 1.了解传记文的基本体例与特征。
您買美元了嗎? 退休規劃 全球外幣保單.
行政作用法 行政命令.
運用網路資源趣味化 「每日飲食指南份量」教學
性別透視鏡 鳳鳴電台 高宜君老師.
1001倫理學讀書會 關於道德 報告人:謝孟釗.
能量買賣訊號 ◎波段賣訊:下列四項出現三項以上(含三項) 1、空方能量升至整波上漲之最高水準,且空方能量>多方 能量30%以上。
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
契約 課程:文書實務與應用 教師:黃湃翔老師.
Chapter 5 遞迴 資料結構導論 - C語言實作.
Chapter 5 迴圈.
教育人員退休新法說明會 106年12月14日 ★資料來源:參考銓敘部及高雄市教育局人事室簡報檔.
國文(一) 1.第一單元---青春印記 (學習篇、愛情篇) 2.第二單元---生活美學 3.第三單元---優遊家園.
控制流程 邏輯判斷 迴圈控制.
遞迴演算法.
函數(一) 自訂函數、遞迴函數 綠園.
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
If … else 選擇結構 P27.
5.1 一些一些遞迴的基本範例 5.2 一個典型的遞迴範例:河內塔 5.3 另一個範例:八個皇后 5-4 何時不要使用遞迴?
(Circular Linked Lists)
算法设计与分析.
奢侈稅成效分析與房市未來發展 吳中書 中華經濟研究院 第十九屆亞太財務經濟會計及管理會議 ~07.09.
Python Final Project 組員:楊承叡、謝谷松.
資料結構 第1章 導論.
計數式重複敘述 for 迴圈 P
遞迴 Recursive 授課老師:蕭志明.
六、函数 教学目标: 函数的概念、定义、调用和返回 带自定义函数的程序设计 递推算法 递归思想及算法实现 函数的参数传递方式 C语言程序设计.
共有六個運算性質 包括它的證明以及相關題型
鄧姚文 資料結構 第一章:基本概念 鄧姚文
鄧姚文 資料結構 第五章:遞迴 鄧姚文
程式結構&語法.
Chap7 Recursive.
程式的時間與空間 Time and Space in Programming
講師:郭育倫 第2章 效能分析 講師:郭育倫
資料結構與C++程式設計進階 遞迴(Recursion) 講師:林業峻 CSIE, NTU 6/ 17, 2010.
參數 實際參數(Actual parameter)與形式參數(Formal parameter)
第 二 章 遞迴(Recursion) 課程名稱:資料結構 授課老師:________ 2019/5/5.
累堆排序法 (Heap Sort).
勞工保險年金制度 簡報人:吳宏翔.
Chapter 6 遞迴.
智慧財產權管理講次36 積體電路電路布局保護法(1) 主講:吳銘圳
法律的解釋 楊智傑.
判斷(選擇性敘述) if if else else if 條件運算子.
遞迴
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
方法(Method) 函數.
Presentation transcript:

第 5 章 遞迴

目次 5.1 遞迴的運作方式 5.2 一個典型的遞迴範例:河內塔 5.3 另一個範例:八個皇后 5.4 何時不要使用遞迴

5.1 遞迴的運作方式 何謂遞迴(Recursive)? Ex 1 :n 階層 (某一數A的階層 = A * (A-1)階層) 5.1 遞迴的運作方式 何謂遞迴(Recursive)? 一個呼叫它本身的函數 撰寫遞迴時,一定要有「結束點」 Ex 1 :n 階層 (某一數A的階層 = A * (A-1)階層) n! = n * (n-1)! (n-1)! = (n-1) * (n-2)! (n-2)! = (n-2) * (n-3)! :   1! = 1

5.1 遞迴的運作方式(con.t) 以遞迴方式計算 n! (結束點為 n = 1) int fact(int n) { int ans; if(n == 1) ans = 1; else ans = n * fact(n-1) return ans; }

5.1 遞迴的運作方式(con.t) 以圖形表示 n!的做法(以4!為例) num = fact(4); 24 6 2 1 n = 4; ans = 4 * fact(3); return(ans); n = 3; ans = 3 * fact(2); n = 2; ans = 2 * fact(1); n = 1; ans = 1; 6 2 1 24

5.1 遞迴的運作方式(con.t) Ex 2:費氏數列(Fibonacci number) n2 = n1+n0=1+1=2 某一數為其前二個數的和 假設 n0=1, n1=1,則 n2 = n1+n0=1+1=2 n3 = n2+n1=2+1=3 : ∴ ni = ni-1+ni-2

5.1 遞迴的運作方式(con.t) 費氏數列函數 int fibon(int n) { int ans; if(n == 0 || n == 1) ans = 1; else ans = fibon(n-1)+fibon(n-2); return(ans); }

5.2 一個典型的遞迴範例:河內塔 河內塔遊戲規則: 每次只能搬一個盤子 盤子有大小之分,而且大盤子在下,小盤子在上 河內塔搬移的演算法 5.2 一個典型的遞迴範例:河內塔 河內塔遊戲規則: 每次只能搬一個盤子 盤子有大小之分,而且大盤子在下,小盤子在上 河內塔搬移的演算法 假使 n = 1,則 搬移第一個盤子從A至C 否則 搬移n–1個盤子從A至B 搬移第n個盤子從A至C 搬移n–1個盤子從B至C

5.2 一個典型的遞迴範例:河內塔(con.t) 河內塔片段程式 void tower(char from,char to,char aux,int n) { if ( n == 1 ) printf("Move disk 1 from %c to %c\n",from,to); else{ tower(from,aux,to,n-1); /* 將 from 標記中的n-1個金盤子,藉助 to 標記的柱子,搬到aux標記的柱子 */ printf("Move disk %d from %c to %c\n",n,from,to); tower(aux,to,from,n-1); /* 將n-1個盤子從aux,藉助from搬到to */ }

5.3 另一個範例:八個皇后 八個皇后遊戲規則 八個皇后牽涉到的觀念 5.3 另一個範例:八個皇后 八個皇后遊戲規則 皇后之間不可在同一列(row)、同一行 (column),也不可以在同一個對角線(diagonal)上。 左上角為(第一列、第一行) 八個皇后牽涉到的觀念 遞迴 往回追蹤(Backtracking)

5.3 另一個範例:八個皇后(con.t) /* 測試在(row,col)上的皇后是否遭受攻擊,遭受攻擊傳回值為1,否則為0 */ int attack (int row, int col) { int i,atk = FALSE; int offset_row,offset_col; i = 0; while ( !atk && i < col ){ offset_col = ABS(i - col); offset_row = ABS(queen[i] - row); /*判斷兩皇后是否在同一列,皇后是否在對角線上*/ /*若皇后同列或在對角線上則產生攻擊,atk == TRUE */ atk = (queen[i] == row) || (offset_row == offset_col); i++; } return atk;

5.4 何時不要使用遞迴 遞迴雖然可以使用少數幾行的敘述就可解決一複雜的問題,但有些問題會導致花更多的時間,因此在何時使用遞迴是很重要的。 5.4 何時不要使用遞迴 遞迴雖然可以使用少數幾行的敘述就可解決一複雜的問題,但有些問題會導致花更多的時間,因此在何時使用遞迴是很重要的。 遞迴樹(recursive tree) Ex:費氏數列 遞迴 非遞迴,即以反覆的(interaive)方式執行 遞迴 vs. 非遞迴(課本表 5.1)

5.4 何時不要使用遞迴(con.t) 費氏數列 – 非遞迴 int fibon(int n) { int ans, i; int backbone = 1, backtwo = 2; if (n == 0 || n == 1) ans = 1; else{ for(i = 2; i<=n;i++){ ans = backone + backtwo; backtwo = backone; backbone = ans; } return ans;

5.4 何時不要使用遞迴(con.t) Ex: n! 的遞迴 遞迴 非遞迴 int fact(int n) int fact(int n) 遞迴 非遞迴 int fact(int n) int fact(int n) { { int ans; int i, ans = 1; if (a==1) for (i=n; i≦; i--) ans = 1; ans *= i; else return ans; ans = n*fact(n-1); } return ans; }

5.4 何時不要使用遞迴(con.t) 建議使用遞迴的時機 遞迴樹類似一棵木(如費氏數列的圖),但重覆動作很少時 Ex:八個皇后 建議使用非遞迴的時機 遞迴樹類似灌木,但重覆動作很多的 遞迴樹類似一條通道的 Ex:費氏數列、n!