支配定理法Mastertheoremmethod.ppt

支配定理法Mastertheoremmethod

Algorithms (Dr. Shi-Jay Chen, National United University) Course 2 遞迴 Recursion ▓ Outlines 本章重點 Def.與種類 Recursion與Non-recursion的比較 設計方式 遞迴演算法則的複雜度分析 數學解法 (Mathematics-based method) 替代法 (Substitution method) 遞迴樹法 (Recursion tree method) 支配定理法 (Master theorem method) ▓ Recursion Algorithm 一般來說,有兩種方式可以撰寫具有重覆執行 (Repetitive)特性的演算法: Iteration (迴圈) Recursion (遞迴) Def: algorithm 中含有self-calling (自我呼叫)敘述存在。 遞迴的種類: 直接遞迴 (Direct Recursion): 函式或程序直接呼叫本身時稱之。 間接遞迴 (Indirect Recursion): 函式或程序先呼叫另外的函式,再從另外函式呼叫原來的函式稱之。 尾端遞迴 (Tail Recursion): 屬於直接遞迴的特例 建議:用非遞迴方式會較有效率 即: 改用迴圈 (while…, repeat…until) ∵遞迴要花費額外的處理 (如: stack的push, pop,…) ▓ 遞迴演算法則的設計 找出問題的終止條件. 找出問題本身的遞迴關係. 遞迴的架構: 階乘 (Factorial; n!) Recursive Factorial Algorithm inputs: n is the number being raised factorially outputs: n! is returned Procedure Factorial(int n) begin if (n = 0) return 1; else return (n? Factorial(n-1)); end Write a program in C++ int Factorial(int n) { if (n==0) return (1); else return (n*Factorial(n-1)); } Iterative Factorial Algorithm inputs: n is the number being raised factorially outputs: n! is returned void Factorial(int n) { factN = 1; for (i=1, i ≤ n, i++) factN = factN * i; return factN; } 費氏數 (Fibonacci Number) Ex: 觀念: F0 + F1 ? F2 F1 + F2 ? F3 F2 + F3 ? F4 F3 + F4 ? F5 Recursive Algorithm Definition Recursive Fibonacci Algorithm inputs: num identified the ordinal of the Fibonacci number outputs: returns the nth Fibonacci number void Fib(int num) { if (num is 0 OR num is 1) return num; else return (Fib(num-1) + Fib(num-2)); } Based on recursive function, 求Fib (4) 共呼叫此函數幾次? (含Fib(4)) ? Ans: 9次 Iterative Fibonacci Number Algorithm inputs: num identified the ordinal of the Fibonacci number outputs: returns the nth Fibonacci number void Fib(int num) { if (num is 0 OR num is 1) return num; el

文档评论(0)

1亿VIP精品文档

相关文档