遞迴 Recursive 授課老師:蕭志明.

Slides:



Advertisements
Similar presentations
達悟族報告 作者 : 林琪崴, 許原碩 座號 :13 號,14 號 原碩負責 : 簡介, 傳說, 圖驣, 達悟族飛魚季, 琪崴 : 地理位置, 土地利用方式, 飲食文化, 豐收祭.
Advertisements

主讲:张天明 影像艺术工程师. 声音的聆听 指出听到的是什么物体发出的声音,这一 声音是在什么样的空间环境中传播的。 一、 答案: 1 、打气筒打气的声音 2 、手打打气筒给足球打气的声音 3 、手打打气筒给自行车轮胎打气的声音 4 、七次(七声)打气筒打气的声音 5 、(气流)摩擦的声音 6 、猪在发急时的叫声.
概念導向命題技巧與試題分析 臺灣師大地理系 陳國川. 教學評量是一種『抽樣調查』 實施教學評量時,需具備二項條件: 其一,瞭解命題的理論及其實踐的方法; 其二,瞭解各種題型的功能與命題方式。 壹、前言.
高峰植物園行前解說 2005/12/07 By 羽明. 陽性先驅物種 陽性植物 --- 陽光需求量大 陰性 ( 或耐蔭性 ) 植物 --- 陽光需求量少, 或 日照太強反而無法生存 先驅植物 --- 森林大火或土石流地震後產生的 裸露空地, 先生長出來的植物.
報 告 人 : 胡 嘉 琪 ˙ˇ˙ 、 王 紫 庭 = ˇ = 台灣夜市文化 作者: 郭明澤‧私立明道高中‧綜二 4 班 馬炯修‧私立明道高中‧綜二 4 班.
5 ˙ 1 第五章 生物的協調作用 5 ‧ 1 神經系統. 5 ˙ 1 人體的神經系統 1. 協調動物生理反應的系統: 神經 系統、 內分 泌 系統。 2. 神經系統負責 統整 和 協調 。分為 中樞 神經 和 周圍 神經。 (1) 中樞神經包括 腦 和 脊髓 。 (2) 周圍 神經包括 腦神經 和.
从《西游》看大学生的成长 主讲人:颜廷学 时间: 地点:演艺大楼流行剧场.
新员工培训 设计部 思安新能源股份有限公司 主讲人: 韩少华 时 间:
前言:河流的主要功能 1. 交通運輸 優點-運費低廉,維護費用低 缺點-速度慢,裝載費時,不能到達生產區或消費區 的末端,需要轉載。 尚受到河流網路,河口位置,水量變化,河床 狀況,冰封時期 2. 水資源系統.
幽夢影~張潮 小佑子工作室 關於《幽夢影》 作者張潮,記寫他個人對人生世事之體驗透悟的 書。 書中文字,全為「語錄」形式,屬於格言,也是 最精鍊的隨筆。 全書可分為九卷:論才子佳人、論人與人生、論 朋友知己、論讀書、論閒情逸趣、論立身處世、 談文論藝、論四時佳景、論花鳥蟲魚。
成人高考高起点 语文 冲刺班 主讲老师:邓君媚. 复习指导 高考语文含四大块内容: 语言知识和语言表达,古代诗文阅读,现 代文阅读,写作。 在全面复习的前提下,按照《考试大纲》 的要求,要做好思路整理,建立高考的整体框 架的工作。认真归纳整理基础知识、培养基本 能力,复习做到有的放矢。 复习指导.
老师,我可以不 爱 吗? 山东省淄博市张店区实验中学 杜桂兰 星期一的早晨,我紧张而又兴奋,因为 我的赛教课就要开始了。 这是一次级别很 高 的竞赛。
财政部 国家税务总局 中国人民银行(央行) 银监会 证监会 保监会. 法定存款准备金率 利率 税率 政府投资 楼继伟,周小川,易纲.
油蔴菜籽 指導老師:陳瑜霞 學生: 商設一甲 謝旻璇 車輛三乙 許勝傑 工管四甲 彭凱雲. 作者介紹: 廖輝英( 1948 年生)臺大中文系畢業。 從初三開始寫作,早期作品多以散文為主,大四 畢業時才暫時封筆。畢業後進了廣告界,成為廣 告文案好手,後為企畫主管,在廣告界縱橫十餘 年,也曾任職於建設公司,辦過社區報高雄一周。
蘭嶼情人洞傳說 林庭羽製 林庭羽製. 台灣的蘭花特別多,台灣有個蘭 嶼島,島上面的蘭花更多.所以 叫蘭嶼.這裡留下了動人的傳說。
職業訪談報告. 成員 : 鐘怡君 劉沛君 謝明達 賴映辰.
南台科大幼保實習課程 見習幼兒園心得報告 夜四技幼保四甲 998i0021 黃欣婷.
第一單元 建立java 程式.
第 5 章 中國的都市.
第一章 生殖 1‧2 無性生殖.
高教三十条 — 科技创新能力提升 科技创新能力提升工程方案起草小组 2013年7月4日.
你不可不知之 十二年國教二三事 教務主任:傅瑞琪.
鞋 楦 的 材 質.
最古怪的15種動物.
走! 一起去拜訪筏子溪.
台灣文學館之旅.
單車環島之旅 組員: 495D0072 胡閎智 495D0074 何冠緯 495D0020 王怡雯 495D0047 葉亭君
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
5.1 一些一些遞迴的基本範例 5.2 一個典型的遞迴範例:河內塔 5.3 另一個範例:八個皇后 5-4 何時不要使用遞迴?
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
请说出牛顿第一定律的内容。.
引導者的角色 組別:第5組 4A1I0003 劉芷媛 4A1I0004 陳安琪 4A1I0014 陳佳瑩 4A1I0046 葉倢茹
您買美元了嗎? 退休規劃 全球外幣保單.
古文閱讀 – 像虎伏獸 明 劉基 組員: 5號江依倫 6號江若薇 12號張珉芫 32號蔡燕如.
腦科學導論 報告主題:大腦的解讀 姓名:徐敏甄.
性別透視鏡 鳳鳴電台 高宜君老師.
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
Chapter 5 遞迴 資料結構導論 - C語言實作.
Chapter 5 迴圈.
遞迴演算法.
函數(一) 自訂函數、遞迴函數 綠園.
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
5.1 一些一些遞迴的基本範例 5.2 一個典型的遞迴範例:河內塔 5.3 另一個範例:八個皇后 5-4 何時不要使用遞迴?
Introduction.
The Divide-and-Conquer Strategy
資料結構 第1章 導論.
C Programming in Action
第一單元 建立java 程式.
始得西山宴遊記 柳宗元.
共有六個運算性質 包括它的證明以及相關題型
Chap7 Recursive.
Chapter 2 遞迴 (Recursion).
學這些有什麼好處呢? 為了把資料作更客觀之總結描述或比較多組資料。總而言之,就是要找出一個數能代表整組數據。
CH05. 選擇敘述.
第 5 章 遞迴.
資料結構與C++程式設計進階 遞迴(Recursion) 講師:林業峻 CSIE, NTU 6/ 17, 2010.
參數 實際參數(Actual parameter)與形式參數(Formal parameter)
第 二 章 遞迴(Recursion) 課程名稱:資料結構 授課老師:________ 2019/5/5.
遞迴 Recursion.
MultiThread Introduction
Chapter 6 遞迴.
數學遊戲二 大象轉彎.
智慧財產權管理講次36 積體電路電路布局保護法(1) 主講:吳銘圳
查表法&電腦IO Port二進制轉七段顯示器
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Chapter 4 Multi-Threads (多執行緒).
遞迴
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

遞迴 Recursive 授課老師:蕭志明

遞迴( Recursive ) 一個副程式或函數重複的呼叫自己本身,稱為遞迴(Recursive)。 利用遞迴解決問題,既經濟又方便。 可用遞回來解決的問題,那它也一定可轉成利用非遞迴的方式解決之。 撰寫遞迴時,千萬小心,一定要有一個結束點,否則後果嚴重。 遞迴在執行時,會藉助堆疊將呼叫本身函數的下一個敘述位址儲存起來,待執行完結束點後,再將堆疊的資料一一的彈出來處理。

遞迴設計步驟 發展從一個或多個較小實例的解中得到較大實例的解之方式。 決定分割為較小實例的終止條件。 決定終止條件時的解。

階乘 求n!,一般可能用的規則: 利用迴圈: 利用遞迴: n! = n * (n-1)!; ans = 1; for (i = 2; i <= n; i++) ans = ans * i; 利用遞迴: int fact(int n) { int x, y; if (n == 0) // boundary condition return(1); x = n-1; y = fact(x); return(n*y); } /* end fact */

遞迴呼叫流程圖 n=4 int fact(int n) { int x, y; if (n == 0) // boundary condition return(1); x = n-1; y = fact(x); return(n*y); } /* end fact */ n=4 n=2 n=1 n=0 fact(2) … y=fact(1) fact(0) … Return(1) fact(4) … y=fact(3) n=3 fact(3) … y=fact(2) fact(1) … y=fact(0) Fact(2)=2 Fact(0)=1 Fact(3)=6 Fact(1)=1 Fact(4)=24

遞迴呼叫流程圖 練習:fact(5)的呼叫過程,遞迴呼叫流程圖為何。 n=5 int fact(int n) { int x, y; if (n == 0) // boundary condition return(1); x = n-1; y = fact(x); return(n*y); } /* end fact */ n=5

遞迴推疊圖 (The recursive stack) 呼叫過程: f4 f3 f2 f1 f0

The stack at various times during execution during execution. y (i)printf(“%d”, fact(3)) The stack at various times during execution during execution. (An asterisk indicates an uninitialized value.)

費氏數列 費氏數列 (Fibonacci number): 利用遞迴範例: int fib(int n) f(0) = 0;* f(1) = 1; f(2) = f(1) + f(0); f(3) = f(2) + f(1); : f(n) = f(n-1) + f(n-2); 利用遞迴範例: int fib(int n) { int x, y; if (n <= 1) return(n); x = fib(n-1); y = fib(n-2); return(x+y); } /* end fib */

遞迴呼叫流程圖 fib(4) … x=fib(3) fib(3) … x=fib(2) y=fib(1) y=fib(2) n=4 fact(2) … x=fib(1) y=fact(0) fib(1) Return(1) n=2 n=1 fib(1)=1 fib(2)=1 fib(0) Return(0) n=0 fib(0)=0 n=3 fib(3) … x=fib(2) y=fib(1) fib(3)=2 n=1 fib(1) Return(1) n=4 fib(1)=1 fact(2) … x=fib(1) y=fact(0) fib(1) Return(1) n=2 n=1 fib(1)=1 fib(2)=1 fib(0) Return(0) n=0 fib(0)=0 int fib(int n) { int x, y; if (n <= 1) return(n); x = fib(n-1); y = fib(n-2); return(x+y); } /* end fib */ fib(4)=3

遞迴推疊圖 (The recursive stack) 呼叫過程: f1 f2 f3 f4 f0

遞迴推疊圖 練習:fib(5)的呼叫過程,請用樹狀結構來表示。 n=5 int fib(int n) { int x, y; if (n <= 1) return(n); x = fib(n-1); y = fib(n-2); return(x+y); } /* end fib */ n=5

遞迴推疊圖 f5 f1 f2 f3 f4 f0 呼叫過程:

何時不要使用遞迴? 遞迴雖然可以使用少數幾行的敘述就可以解決一些複雜的問題,但有些問題會使用更多的執行時間。 以費氏數列為例: 遞迴之複雜度為O(2n),而迴圈只要O(n)。 約需時2n/2

結論 以階乘為例:無論使用遞迴或迴圈,複雜度階為O(n)。 但遞迴需要較大的記憶體空間。 結論: 執行過程不像灌木,而是一直線的前進與後退,如:階乘,亦不適用遞迴。 以迴圈會使程式困難設計時,可考慮用遞迴。