Topics of Recursion 1.Snow Flake 2.Developing Methodology 3.Property of Recursion Step Level Depth 4.Recursive algorithm factorial function fibonacci sequence Ackermanm Function 5.Recurrence Model 6.Removing Recursion 1
Solving Recurrences 1. Solving Recurrences Using Induction 2. Solving Recurrences Using The Characteristic Equation 2.1 Homogeneous Linear Recurrences 2.2 Nonhomogeneo us Linear Recurrences 3. Solving Recurrences By Substitution 2
1.Snow flake ค อร ปแบบ fractal ท น ามาท าให ร ปร างตามส วนใด ส วนหน งของร ปภาพซ งม ขนาดใดก ได เม อน ามาขยายก จะมองเห นเหม อนร ปภาพเด ม ซ ง ประกอบด วย 1. Primitive (ภาพเร มต น) 2. กฎการ recursive ซ งส มพ นธ ก บ ส วนของร ป...ซ งม ขนาดต างๆก น 3
Fractal and Snowflake Definition of Fractal Fractal : โดยล กษณะของร ป... ท ม การแผ ออกไปน จะถ กเร ยกว า... ร ปต วอย างท Supplement บน web 4
2.Developing Methodology When developing a recursive algorithm for a problem, we need to Develop a way to obtain the solution to an instance from the solution to one or more smaller instances. Determine the terminal condition(s) that the smaller instance(s) is (are) approaching Determine the solution in the case of the terminal condition(s) 5
3.Property of Recursion A recursive program is one that calls... Algorithm ท ม ล กษณะ recursion ค อม ค ณสมบ ต ด งน 1. ม ค า argument บางต วท เร ยกว า... เพ อเป น... 2. ในแต ละคร งท เร ยกต วเองจะต องเข าใกล... ต วอย าง recursive program ท ร จ กก นด ได แก factorial... 6
4.1Factorial ผลค ณของเลขจ านวนเต มบวกจาก 1 ถ ง n ค อ n! n! =1*2*3*...*(n-2) * (n-1) * n ; when n >= 1 0! = Definition 1. If n = then n! = 2. If n > then n! = ด งน น factorial ม base value = จาก definition 7
ต วอย าง 4! ต วอย างเช น การแสดง step การหา 4! 1. 4! = 2. 3! = 3. 2! = 4. 1! = 5. 0! = 5. 0! = 1 6. 1! = = 7. 2! = = 8. 3! = = 9. 4! = = 8
Step 1. ก าหนด 4! ในเทอม ซ งย งไม ทราบค าของ 4! จนกว าจะทราบค าของ 2. ก าหนด 3! ในเทอม ซ งย งไม ทราบค าของ 3! จนกว าจะทราบค าของ 3. ก าหนด 2! ในเทอม ซ งย งไม ทราบค าของ 2! จนกว าจะทราบค าของ 4. ก าหนด 1! ในเทอม ซ งย งไม ทราบค าของ 1! จนกว าจะทราบค าของ 5. ได ค าของ 0! = 1 เน องจาก เป น base value 6.-9. ท างานกล บโดยใช ค า 0! แทนค าให 1! และ 1! แทนค าให 2! ไป เร อยๆ 9
Level and Depth of Recursion จ านวน...ของโปรแกรมท เก ดข นในระหว างการเร ยกต วเอง หมายเลขระด บในแต ละการท างานของโปรแกรมพ จารณาจากข อม ลท เหล ออย ใน ในแต ละ ยกต วอย างจาก การหา 4! การแสดงการท างานแบบ Recursion จะ ใช stack ในการเก บค า ส าหร บข นตอนการเร ยกต วเอง step ท 1-5 จะเป นการ push ค า factorial ท ย งไม ทราบลงก อน step ท 5-4 ก จะเป นการแทนค ากล บแล ว pop ค า ออกจาก stack 4! 10
step ท level ยกต วอย างจาก การหา 4! 1 2 4 1! 3 2! 3 2! 2 3! 2 3! 2 3! 2 1 4! 1 4! 1 4! 1 4! 1 4! 3 4 5 4 3 5 0! = 1 1! 2! 3! 4 1 3 2! 3 2 2 3! 2 3! 1 4! 1 4! 6 7 2 1 6 4! 8 1 24 9 Depth = no. of max level ด งน น Depth = 5 11
ร ปของป ญหา : Factorial Algorithm Algorithms : Factorial Problem : Determining n! = 1* 2 * 3 *... * (n-2) * (n-1) * n ; when n >= 1 Inputs : Outputs : Function : 0! = 1 12
ร ปของป ญหา : Factorial Algorithm (ต อ) function fact(n:integer) : integer; begin if n = then fact := else fact := end; 13
Code in C of Factorial Function long rec_fac (long) { if (n= ) return( ) else return ( ); } 14
4.2Fibonacci sequence (อ นด บไฟโบแนซซ ) Definition : Fibonacci sequence IF n = or n = then F(n) = IF n > = then F(n) = base values : แบบฝ กห ด จงเข ยน - ร ปของป ญหา : Fibonacci sequence Algorithm - Code in C or Pascal or Any Language for : Fibonacci sequence 15
ร ปของป ญหา : Fibonacci Algorithm Algorithms : Fibonacci Problem : Determining Fib(n).. Inputs : a nonnegative integer n. =? Outputs : Fib(n) Function :.. 16
4.3Ackermamn Function : ฟ งก ช นแอคเคอร มานน Definition : Ackermanm IF m = then A(m,n) = IF m!= but n = then A(m,n) = A(m-1,1) IF m!= but n!= then A(m,n) = A(m-1,A(m,n-1)) base values (criteria) : m = 17
ต วอย าง Ackermamn Function หาค าของA(1,1) A(1,1) = A(1,0) = A(0,1) = A(1,0) = A(1,1) = A(0,2) = A(1,1) = 18
ร ปของป ญหา : Ackermanm Algorithm Algorithms : Ackemanm Problem : Determining A(n).. Inputs : a nonnegative integer n. =? Outputs : A(n) Function :.. 19
5.Recurrence Model การแปลงร ปจากสมการท วไปท ย งไม ใช ร ปแบบเว ยนเก ดให เป นร ปแบบ เว ยนเก ดหร อเร ยกต วเองท าได โดย 1. ท าการแปลงให อย ในร ปของ IF-Case 2. หา initial condition (base criteria) ต วอย างเช น ร ปท วไปของสมการ S(n) = S(n-1) + f(n) ; for all n = 1,2,3, S(0) = 1 ; special case for n= f(n) = n-1 20
5.Recurrence Model ร ปท วไปของสมการ สามารถท าให เป น Recurrence Model ได ด งน 1. If n = then S(n) = 2. If n > then S(n) = 21
6.Removing Recursion การแปลงร ปแบบของ recursive ให เป น non recursive เช น factorial long nonrec_fac(long n) { long fact; long i; // declaration if (n == ) return else { } for ( i = ;i <= fact = return ( ) ; i++) 22
GCD : Greatest Common Division Definition : GCD(B,A) ; A < B GCD (A,B) = A ; B = 0 Version Recursive Non-Recursive ต วอย างเช น การหา GCD(8,28) GCD(B,MOD(A,B)) ;otherwise 23
Recursive GCD int GCD_Rec (int a, int b) { if (b ==) return ; else if ( < ) GCD_Rec ( ) else GCD_Rec ( ); } 24