James Tam Recursion You will learn the definition of recursion as well as seeing how simple...
-
date post
22-Dec-2015 -
Category
Documents
-
view
219 -
download
0
Transcript of James Tam Recursion You will learn the definition of recursion as well as seeing how simple...
![Page 1: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/1.jpg)
James Tam
Recursion
You will learn the definition of recursion as well as seeing how simple recursive programs work
![Page 2: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/2.jpg)
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)
![Page 3: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/3.jpg)
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. The solution for all the steps together form the solution to the whole problem.
(The “Tam” translation)
![Page 4: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/4.jpg)
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
![Page 5: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/5.jpg)
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
![Page 6: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/6.jpg)
James Tam
Result Of Lookup , Possibility One: Success
•I know what Ontology means!
![Page 7: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/7.jpg)
James Tam
Result Of Lookup, Possibility One
Philosophy?
Metaphysics?
Ontology!
Success! I’ll take a Philosophy option.
![Page 8: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/8.jpg)
James Tam
Result Of Lookup, Possibility Two: Failure
•Lookups loop back.
![Page 9: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/9.jpg)
James Tam
Result Of Lookup, Possibility Two
Philosophy?
Metaphysics?
Ontology?
Rats!!!
See previous
![Page 10: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/10.jpg)
James Tam
Ontology
“…equivalent to metaphysics.”3
3 The New Webster Encyclopedic Dictionary of the English Language
Wav file from “The Simpsons”
![Page 11: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/11.jpg)
James Tam
Result Of Lookup, Possibility Three: Failure
•You’ve looked up everything and still don’t know the definition!
![Page 12: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/12.jpg)
James Tam
Looking Up A Word
if (you completely understand a definition) thenreturn to previous definition (using the definition that’s understood)
else
lookup (unknown word(s))
![Page 13: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/13.jpg)
James Tam
Recursion: Can Be Used To Produce Graphics
Images from http://www.csis.gvsu.edu/~marzkaj/CS367/project1.htm
Produce a picture by repeating a pattern
![Page 14: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/14.jpg)
James Tam
Recursion: Can Be Used To Produce Graphics (2)
http://charm.cs.uiuc.edu/users/olawlor
![Page 15: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/15.jpg)
James Tam
Recursion In Programming
“A programming technique whereby a function calls itself either directly or indirectly.”
![Page 16: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/16.jpg)
James Tam
Direct Call
function
def fun ():
:
fun ()
:
![Page 17: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/17.jpg)
James Tam
Indirect Call
f1
f2
![Page 18: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/18.jpg)
James Tam
Indirect Call
f1
f2
f3
…
fn
![Page 19: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/19.jpg)
James Tam
Indirect Call (2)
The name of the online example is: recursion1.py1
def fun1 ():
fun2 ()
def fun2 ():
fun1 ()
fun1 ()
1 This program nominally fulfills the requirements for recursion but it contains an error.
![Page 20: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/20.jpg)
James Tam
Requirements For Sensible Recursion
1) Base case
2) Progress is made (towards the base case)
The name of the corresponding online example is: sumSeries.py
![Page 21: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/21.jpg)
James Tam
sum (2)
if (2 == 1)
return 1
sum (3)
if (3 == 1)
return 1
Example Program
def sum (no):
if (no == 1):
return 1
else:
return (no + sum(no-1) )
def main ():
lastNumber = input ("Enter the last
number in the series: ")
total = sum (lastNumber)
print "The sum of the series from 1
to", lastNumber, "is", total
main ()
sumSeries
total = sum(3)
F
else
return (3 + sum (3 – 1))
F
else
return (2 +sum (2 – 1));
sum (1)
if (1 == 1)
return 1
T
1
3
6
![Page 22: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/22.jpg)
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.- There is a scenario when you can stop sub-dividing the problem into steps (recursive calls) and return to previous steps. The solution for a later step solves an early step.
•All of the results together solve the problem.
![Page 23: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/23.jpg)
James Tam
When To Consider Alternatives To Recursion
•When a loop will solve the problem just as well- Recursion is used when a loop cannot: There is a scenario when you can stop sub-dividing the problem into steps (recursive calls) and return to previous steps. The solution for a later step solves an early step.
•Types of recursion:- Tail recursion
•A recursive call is the last statement in the recursive function.•This form of recursion can easily be replaced with a loop.
- Non-tail recursion•A statement which is not a recursive call to the function comprises the last statement in the recursive module.
•This form of recursion is very difficult (read: impossible) to replace with a loop.
![Page 24: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/24.jpg)
James Tam
Drawbacks Of Recursion
Function calls can be costly- Uses up memory- Uses up time
![Page 25: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/25.jpg)
James Tam
Benefits Of Using Recursion
•Simpler solution that’s more elegant (for some problems)
•Easier to visualize solutions (for some people and certain classes of problems – typically require either: non-tail recursion to be implemented or some form of “backtracking”)
•Example: finding the path out of a maze.Maze Exit path
![Page 26: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/26.jpg)
James Tam
Common Pitfalls When Using Recursion
•These three pitfalls can result in a runtime error- No base case- No progress towards the base case- Using up too many resources (e.g., variable declarations) for each
function call
![Page 27: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/27.jpg)
James Tam
No Base Case
def sum (no):
return (no + sum (no - 1))
![Page 28: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/28.jpg)
James Tam
No Base Case
def sum (no):
return (no + sum (no - 1))When does it stop???
![Page 29: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/29.jpg)
James Tam
No Progress Towards The Base Case
def sum (no):
if (no == 1):
return 1
else:
return (no + sum (no))
![Page 30: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/30.jpg)
James Tam
No Progress Towards The Base Case
def sum (no):
if (no == 1):
return 1
else:
return (no + sum (no))
The recursive case doesn’t make any progress towards the base (stopping) case
![Page 31: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/31.jpg)
James Tam
Using Up Too Many Resources
The name of the online example is: recursion2.py
def fun (no):
print no
aList = []
for i in range (0, 10000000, 1):
aList.append("*")
no = no + 1
fun (no)
![Page 32: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/32.jpg)
James Tam
Undergraduate Definition Of Recursion
Word: re·cur·sion
Pronunciation: ri-'k&r-zh&n
Definition: See recursion
Wav file from “The Simpsons”
![Page 33: James Tam Recursion You will learn the definition of recursion as well as seeing how simple recursive programs work.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649d815503460f94a65f4b/html5/thumbnails/33.jpg)
James Tam
You Should Now Know
•What is a recursive computer program
•How to write and trace simple recursive programs
•What are the requirements for recursion/What are the common pitfalls of recursion