第 二 章 遞迴(Recursion) 課程名稱:資料結構 授課老師:________ 2019/5/5.

Slides:



Advertisements
Similar presentations
Chap 3 微分的應用. 第三章 3.1 區間上的極值 3.2 Rolle 定理和均值定理 3.3 函數的遞增遞減以及一階導數的判定 3.4 凹面性和二階導數判定 3.5 無限遠處的極限 3.6 曲線繪圖概要 3.7 最佳化的問題 3.8 牛頓法 3.9 微分.
Advertisements

不定積分 不定積分的概念 不定積分的定義 16 不定積分的概念 16.1 不定積分的概念 以下是一些常用的積分公式。
大綱 1. 三角函數的導函數. 2. 反三角函數的導函數. 3. 對數函數的導函數. 4. 指數函數的導函數.
2-1 極限的概念 2-2 無窮等比級數 2-3 多項式函數的導數導函數 2-4 微分公式 2-5 微分的應用 2-6 積分的概念與反導函數 信樺文化.
變數與函數 大綱 : 對應關係 函數 函數值 顧震宇 台灣數位學習科技股份有限公司. 對應關係 蛋餅飯糰土司漢堡咖啡奶茶 25 元 30 元 25 元 35 元 25 元 20 元 顧震宇 老師 台灣數位學習科技股份有限公司 變數與函數 下表是早餐店價格表的一部分: 蛋餅 飯糰 土司 漢堡 咖啡 奶茶.
Introduction to C Programming
5.1 一些一些遞迴的基本範例 5.2 一個典型的遞迴範例:河內塔 5.3 另一個範例:八個皇后 5-4 何時不要使用遞迴?
遞迴關係-爬樓梯.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
5.1 自然對數函數:微分 5.2 自然對數函數:積分 5.3 反函數 5.4 指數函數:微分與積分 5.5 一般底數的指數函數和應用 5.6 反三角函數:微分 5.7 反三角函數:積分 5.8 雙曲函數.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Chapter 5 遞迴 資料結構導論 - C語言實作.
Recursion: The Mirrors
基本程式範例.
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
遞迴演算法.
JDK 安裝教學 (for Win7) Soochow University
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
SQL Stored Procedure SQL 預存程序.
5.1 一些一些遞迴的基本範例 5.2 一個典型的遞迴範例:河內塔 5.3 另一個範例:八個皇后 5-4 何時不要使用遞迴?
(Circular Linked Lists)
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
檔案與磁碟的基本介紹.
程式設計專題.
資料結構 第1章 導論.
第一章 直角坐標系 1-1 數系的發展.
遞迴 Recursive 授課老師:蕭志明.
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
學習單元:N6 數的性質 學習單位:N6-3 用短除法求H.C.F. 和 L.C.M. 學習重點 : 1. 複習因數分解法求
|07 函數.
最大公因數 第 1 頁.
Chapter 2 遞迴 (Recursion).
小學四年級數學科 8.最大公因數.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
工程數學 Chapter 10 Fourier Series , Integrals , and Transforms 楊學成 老師.
大綱:加減法的化簡 乘除法的化簡 去括號法則 蘇奕君 台灣數位學習科技股份有限公司
河內之塔(Towers of Hanoi)問題
微積分網路教學課程 應用統計學系 周 章.
第 5 章 遞迴.
C qsort.
實作輔導 本周5/5(六)安排實作輔導 二時段: 周六 11:00~12:30 周六13:30~15:30.
參數 實際參數(Actual parameter)與形式參數(Formal parameter)
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
自停式向下計數器 通訊一甲 B 楊穎穆.
函數應用(二)與自定函數.
陣列與結構.
10394: Twin Primes ★★★☆☆ 題組:Problem Set Archive with Online Judge
12797: Letters ★★★☆☆ 題組:Problem Set Archive with Online Judge
※歡迎挑戰,兩人(隊)中先完成連線即算過關!
例題 1. 多項式的排列 1-2 多項式及其加減法 將多項式 按下列方式排列: (1) 降冪排列:______________________ (2) 升冪排列:______________________ 排列 降冪:次數由高至低 升冪;次數由低至高.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
1757: Secret Chamber at Mount Rushmore
13194: DPA Number II ★★☆☆☆ 題組:Problem Set Archive with Online Judge
Chapter 6 遞迴.
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
程式設計實習第十二次上課 傅榮勝.
All Sources Shortest Path The Floyd-Warshall Algorithm
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
ABC ( )已知 ,則下列哪些是x6-7x5-8x4 的因 式?(複選) (A) x+1 (B) 2x+2 (C) x3(x+1)
遞迴
Chapter 16 動態規劃.
第三章 比與比例式 3-1 比例式 3-2 連比例 3-3 正比與反比.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

第 二 章 遞迴(Recursion) 課程名稱:資料結構 授課老師:________ 2019/5/5

本章學習目標 1.讓讀者了解遞迴的使用及條件,進而設計比較簡潔的程式。 2.讓讀者了解如何利用遞迴函數來解決典型的河內塔問題。 2019/5/5

本章內容 2-1遞迴(Recursion) 2-2 遞迴函數 2-3 遞迴的應用 2-4 遞迴與非遞迴的比較 2019/5/5

2-1 遞迴(Recursion) 何謂「遞迴(Recursion)」是指函式本身又可以呼叫自己的副程式。 我們在撰寫程式時,如果適時的使用遞迴方式,將可以使得程式 變得比較簡潔,但是,在撰寫時必須要先了解題意,並且要非常 謹慎小心使用,否則很容易產生無窮迴圈或無法預期的錯誤。 2019/5/5

例如:我們設計一個遞迴程式來計算n!時,如果沒有設定「終止狀況」(Termination Condition)時,將會無限制地呼叫自己,因此,就會造成無窮迴圈現象。 2019/5/5

在目前的程式語言中,並非每一種程式語言都具有遞迴呼叫的功能,例如: (1)不具遞迴呼叫的程式語言:BASIC, FORTRAN,COBOL等。 (2)具遞迴呼叫的程式語言:C, C++, PASCAL等。 2019/5/5

2-2 遞迴函數 如果撰寫程式來處理程序時,並且將程式模組化為一支獨立的函數,如果該函數可以反覆地自己呼叫自己,因此我們稱這個函數為「遞迴函數」。 在遞迴函數中,最典型的例子就是計算n階層的程式。 2019/5/5

一、數學上:n階層的概念如下: 說明:在撰寫一個n階層的遞迴函數程式時,則該函數將具備兩個主要特徵: 1.該遞迴函數可以自己反覆地呼叫自己 (4)參數的值會逐次遞減。 2.當參數值等於1時,必須停止遞迴呼叫。 2019/5/5

二、演算法上:n階層的概念如下: 2019/5/5

三、以圖解來說明:遞迴函數呼叫的過程 圖2-1 遞迴函數呼叫的過程 2019/5/5

四、遞迴函數種類 2019/5/5

2-3 遞迴的應用 遞迴在實務上的應用非常的廣,例如:計算n階乘(n!)、費氏數列、河內塔的圓盤搬移過程、求兩個正整數的最大公因數、二項係數等等。 2019/5/5

2-3.1 n階乘(n!) 利用遞迴方式來撰寫n階乘(n!)的程式。 2019/5/5

2-3.2 費氏數列 利用遞迴方式來撰寫Fibonacci Number(費氏數)的程式。 【定義】某一數列的第零項為0,第1項為1,其它每一個數列中項 目的值是由本身前面兩項的值之和。 2019/5/5

一、數學上:Fibonacci(費氏數)的概念 2019/5/5

二、演算法上:Fibonacci(費氏數)的概念 2019/5/5

2-3.3 最大公因數 一般在數學上找出最大公因數(Great Command Divisor),大多是利用尤拉的輾轉相除法,而輾轉相除法, 又名「歐幾里德演算法」(Euclidean algorithm)乃求兩數之最大公因數演算法。即利用兩數反覆相除,直到結果不為0時,將取其不為0的餘數。 2019/5/5

【演算法】 2019/5/5

【舉例】 以下範例說明輾轉相除法過程:以18及15為例,必須要利用「輾轉 相除法」,求最大公因數。其概念如下所示: 2019/5/5

2-3.4 河內塔問題 假設有A、B、C三根柱子,A柱子上有3個直徑大小不一的中空盤子,由大而小疊放在一起,如下圖(3個盤子)所示。試問最少需要搬多少次,方能將這些盤子從A柱搬到C柱? 【規則】1.一次只能移動一個盤子。 2.在搬移過程中,小的盤子不能放在大的盤子下方。如圖2-2所示。 2019/5/5

【重要觀念】 2019/5/5

2019/5/5

2019/5/5

【老師上課動態展示】檔案在附書光碟中。 2019/5/5

【演算法分析】 時間複雜度的計算是以執行了多少次搬動來計算,那麼T(n)等於多少呢?可由下列方式推演: 說明:當有n個盤子要搬動時,總共要搬動2n-1次, 所以可以說此問題的時間複雜度是O(2n)。 2019/5/5

2-3.5 二項式(Binomial)係數 二項式係數(Binomial Coefficient)來計算是根據Binomial理論,其計算公式為: 一般而言,二項式係數在數學上是應用於計算從m個球中取出n個球的排列組合的問題,目前台灣正熱門的運動彩的下注問題,就可以利用二項式來求算機率的問題。 2019/5/5

【數學與演算法之表示式】 2019/5/5

【舉例】利用遞迴求「二項式係數」之程式 2019/5/5

2-3.6 Ackermann’s Function 2019/5/5

【演算法】 Ackermann’s function在數學上的定義如下: 2019/5/5

【舉例】 利用遞迴求「Ackermann’s function」之程式 2019/5/5

2-4 遞迴與非遞迴的比較 何謂的「非遞迴(Non-recursion)」是指函數本身沒有呼叫自己的程式。 2-4 遞迴與非遞迴的比較 何謂的「非遞迴(Non-recursion)」是指函數本身沒有呼叫自己的程式。 遞迴雖然可以使用少數幾行的敘述就可解決複雜的問題,但有些問題會導致花更多的時間,因此在何時使用遞迴是很重要的。 2019/5/5

【遞迴函數的優、缺點】 2019/5/5

2019/5/5