programming for engineers recursions
play

Programming for Engineers Recursions ICEN 200 Spring 2018 Prof. - PowerPoint PPT Presentation

Programming for Engineers Recursions ICEN 200 Spring 2018 Prof. Dola Saha 1 Function call stack and stack frames Stack is analogous to a pile of books Known as last-in, first-out (LIFO) data structures Pop Push Stack of books 2


  1. Programming for Engineers Recursions ICEN 200– Spring 2018 Prof. Dola Saha 1

  2. Function call stack and stack frames Ø Stack is analogous to a pile of books Ø Known as last-in, first-out (LIFO) data structures Pop Push Stack of books 2

  3. Function call stack Ø Supports function call & return Ø Supports creation, maintenance & destruction of each called function’s local variables Ø Keeps track of return addresses that each function needs to return control to the caller function Ø Function call à an entry is pushed to stack Ø Function return à an entry is popped from stack 3

  4. Recursion Ø A recursive function is a function that calls itself either directly or indirectly through another function. Ø Nature of recursion § One or more simple cases of the problem have a straightforward, nonrecursive solution. § The other cases can be redefined in terms of problems that are closer to the simple cases. 4

  5. Recursively calculating Factorial Ø The factorial of a nonnegative integer n , written n! (pronounced “ n factorial”), is the product n · ( n –1) · ( n – 2) · … · 1 o with 1! equal to 1, and 0! defined to be 1. Ø A recursive definition of the factorial function is arrived at by observing the following relationship: n! = n · (n – 1)! Ø Proof: n! = n · (n-1) · (n-2) ·…… · 2 · 1 n! = n · ( (n-1) · (n-2) ·…… · 2 · 1) n! = n · ((n-1)!) 5

  6. Recursive evaluation of 5! 6

  7. Recursive Factorial C Code (1) 7

  8. Recursive Factorial C Code (2) 8

  9. Recursive Factorial C Code (3) – Output 9

  10. Example Fibonacci Series by Recursion Ø The Fibonacci series o 0, 1, 1, 2, 3, 5, 8, 13, 21, … The Fibonacci series may be defined recursively as follows: Ø fibonacci(0) = 0 fibonacci(1) = 1 fibonacci( n ) = fibonacci(n – 1) + fibonacci(n – 2) 10

  11. Recursive Fibonacci Series C Code (1) 11

  12. Recursive Fibonacci Series C Code (2) 12

  13. Recursive calls 13

  14. Recursion vs Iteration Ø Both iteration and recursion are based on a control statement: Iteration uses a repetition statement; recursion uses a selection statement . Ø Both iteration and recursion involve repetition: Iteration explicitly uses a repetition statement; recursion achieves repetition through repeated function calls . Ø Iteration and recursion each involve a termination test : Iteration terminates when the loop-continuation condition fails ; recursion when a base case is recognized . 14

  15. Recursion is expensive Ø It repeatedly invokes the mechanism, and consequently the overhead, of function calls . Ø This can be expensive in both processor time and memory space. Ø Each recursive call causes another copy of the function to be created; this can consume considerable memory . Ø The amount of memory in a computer is finite, so only a certain amount of memory can be used to store stack frames on the function call stack. Ø If more function calls occur than can have their stack frames stored on the function call stack, a fatal error known as a stack overflow occurs. 15

  16. Class Discussion Ø Write a C Program to find product of 2 Numbers using Recursion Ø Example: § Multiply 6 by 3 § Divide it into two problems: Multiply 6 by 2 1. Add 6 to the result of problem 1 2. § Split problem 1 into 2 smaller problems: Multiply 6 by 2 1. Multiply 6 by 1 a) Add 6 to the result of problem 1a) b) Add 6 to the result of problem 1 2. 16

  17. Class Discussion Ø Write a C Program to find product of 2 Numbers using Recursion Ø Example: § Multiply 6 by 3 Ø Generalization: § Divide it into two problems: Multiply 6 by 2 1. § If n is 1, Add 6 to the result of problem 1 2. o ans is m. § Split problem 1 into 2 smaller problems: § Else Multiply 6 by 2 1. o ans is m + multiply(m-1) Multiply 6 by 1 a) Add 6 to the result of problem 1a) b) Add 6 to the result of problem 1 2. 17

  18. Trace Multiply 18

  19. Recursive Multiply 19

  20. Class Discussion Ø Raising an integer to an integer power Ø Example: § 3 3 § Divide it into two problems: 3 2 1. Multiply 3 to the result of problem 1 2. § Split problem 1 into 2 smaller problems: 3 2 1. 3 1 a) Multiply 3 to the result of problem 1a) b) Multiply 3 to the result of problem 1 2. 20

  21. Class Discussion Ø Raising an integer to an integer power Ø Example: § 3 3 § Divide it into two problems: 3 2 Ø Generalization: 1. Multiply 3 to the result of problem 1 2. § If n is 1, § Split problem 1 into 2 smaller problems: o ans is m. 3 2 1. § Else 3 1 a) o ans is m * power(m,n) Multiply 3 to the result of problem 1a) b) Multiply 3 to the result of problem 1 2. 21

  22. Count by Recursion Ø Develop a function to count the number of times a particular character appears in a string. count( ‘s’, “Mississippi sassafrs”); 22

  23. Counting Occurences Code (1) 23

  24. Counting Occurences Code (2) 24

  25. Iteration vs Recursion Ø Iteration Ø Recursion § When the problem is simple § When the problem is complex § When solution is not inherently § When the solution is inherently recursive recursive § The stack space available to a thread is often much less than the space available in the heap, Recursive algorithms require more stack space than iterative algorithms. 25

  26. Iteration vs Recursion 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend