Download presentation
Presentation is loading. Please wait.
2
James Tam Recursion You will learn what is recursion as well as how and when to use it in your programs.
3
James Tam What Is Recursion? “the determination of a succession of elements by operation on one or more preceding elements according to a rule or formula involving a finite number of steps” (Merriam- Webster online)
4
James Tam What This Really Means Breaking a problem down into a series of steps. The final step is reached when some basic condition is satisfied. The solution for each step is used to solve the previous step.
5
James Tam Definition For Philosophy “…state of mind of the wise man; practical wisdom…” 1 See Metaphysics 1 The New Webster Encyclopedic Dictionary of the English Language
6
James Tam Metaphysics “…know the ultimate grounds of being or what it is that really exists, embracing both psychology and ontology. ” 2 2 The New Webster Encyclopedic Dictionary of the English Language
7
James Tam Result Of Lookup (Possibility One: Success) I know what Ontology means!
8
James Tam Result Of Lookup (Possibility One) Philosophy? Metaphysics? ? Ontology! ? ! ! Success! I’ll take a Philosophy option.
9
James Tam Result Of Lookup (Possibility Two: Failure) I don’t have a clue.
10
James Tam Result Of Lookup (Possibility Two) Philosophy? Metaphysics? ? Ontology? ? ? Rats! I’m taking MGIS instead.
11
James Tam Ontology “…equivalent to metaphysics.” 3 3The New Webster Encyclopedic Dictionary of the English Language
12
James Tam Looking Up A Word If (completely understand a definition) Return to previous definition (using definition that’s understood) Else lookup (unknown word(s))
13
James Tam Recursion In Programming “A programming technique whereby a function or procedure calls itself either directly or indirectly.”
14
James Tam Direct Call function
15
James Tam Indirect Call fun1 fun2 fun3 … noMoreFun
16
James Tam Requirements For Recursion 1) Base case 2) Progress is made (towards the base case)
17
James Tam Counting Example Write a program that will compute the sum of the first n positive integers. e.g. n = 3, sum = 3 + 2 + 1 = 6 = 2 + 1 = 3 sum (3) = 3 + sum (2) sum (2) = 2 + sum (1) sum (1) = 1 = 3 + 3 = 6
18
James Tam sum (2) if (2 = 1) then sum := 1 sum (3) if (3 = 1) then sum := 1 Example Program program sumSeries (input, output); var lastNumber : integer; total : integer; function sum (no : integer): integer; begin if (no = 1) then sum := 1 else sum:= (no + sum (no - 1)); end; begin write('Enter the last number in the series :'); readln(lastNumber); total := sum(lastNumber); writeln('Sum of the series from 1 - ', lastNumber, ' is, ', total); end. sumSeries total = sum(3) F else sum := (3 +sum (3 – 1)); F else sum := (2 +sum (2 – 1)); sum (1) if (1 = 1) then sum := 1 T 1 3 6
19
James Tam Indirect Recursion In Pascal F or full example look under /home/231/examples/functions/indirect.p Example Scenario: procedure proc1 calls procedure proc2 but procedure proc2 calls procedure proc1 Which one comes first?
20
James Tam Procedure Proc1 First? procedure proc1; begin : proc2; : end; procedure proc2; begin : proc1; : end; What is proc2?
21
James Tam Procedure Proc2 First? procedure proc2; begin : proc1; : end; procedure proc1; begin : proc2; : end; What is proc1?
22
James Tam Solution: Use A Dummy Definition A "placeholder" for the compiler (definition comes later) Example problem procedure proc1; begin : proc2; : end; procedure proc2; begin : proc1; : end;
23
James Tam Solution: Use A Dummy Definition A "placeholder" for the compiler (definition comes later) Example problem procedure proc2; FORWARD; procedure proc1; begin : proc2; : end; procedure proc2; begin : proc1; : end;
24
James Tam When To Use Recursion When a problem can be divided into steps The result of one step can be used in a previous step All of the results together solve the problem
25
James Tam When To Consider Alternatives To Recursion When a loop will solve the problem just as well
26
James Tam Drawbacks Of Recursion Function calls can be costly Uses up memory Uses up time
27
James Tam Benefits Of Using Recursion Simpler solution that’s more elegant (for some problems) Easier to visualize solutions (for some people)
28
James Tam Common Pitfalls When Using Recursion No base case No progress towards the base case Using up too many resources (e.g., variable declarations) for each function call
29
James Tam No Base Case function sum (no : integer): integer; begin sum := (no + sum (no - 1)); end;
30
James Tam No Progress Towards Base Case function sum (no : integer): integer; begin if (no = 1) then sum := 1 else sum := (no + sum (no)); end;
31
James Tam Using Up Too Many Resources F or full example look under /home/231/examples/functions/resourceHog.p procedure proc; var arr : array [1..1000000] of char; begin proc; end;
32
James Tam Undergraduate Definition Of Recursion Word: re·cur·sion Pronunciation: ri-'k&r-zh&n Definition: See recursion
33
James Tam Summary Description of recursion Real world example Trace of a recursive Pascal program Benefits and drawbacks of using recursion When to use recursion and when to consider alternatives What are the potential pitfalls of using recursion Alternative definition of recursion
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.