170 likes | 335 Views
New Mexico Computer Science For All. Recursion Maureen Psaila-Dombrowski. Recursion . What is Recursion? It is a concept/method used in computer science and mathematics Recursive problem: The problem can be described as a reduced or smaller form of the same problem
E N D
New Mexico Computer Science For All Recursion Maureen Psaila-Dombrowski
Recursion • What is Recursion? • It is a concept/method used in computer science and mathematics • Recursive problem: The problem can be described as a reduced or smaller form of the same problem • Sometimes the problem gets so small that the solution of the small problem is trivial can solved recursively or has a recursive implementation • Recursion occurs in computer science when you use a recursive implementation • ….WHAT?
Recursion - Example • Classic example is a factorial: n! 5! 5! = 5 * 4 * 3 * 2 * 1
Recursion - Example But 4! = 4 * 3 * 2 * 1 5! = 5 * 4! 5! = 5 * 4 * 3 * 2 * 1 NON – recursive definition Recursive definition SO… The problem can be broken down into a smaller or reduced version of the same problem Maybe it can be solved recursively !
Recursion - Example • Look for the smallest MOST TRIVIAL form of the problem: 5! = 5 * 4 * 3 * 2 * 1 5! = 5 * 4! but 4! = 4 * 3 * 2 * 1 and 4! = 4 * 3! since 3! = 3 * 2 * 1 but 3! = 3 * 2 * 1 and 3! = 3 * 2! since 2! = 2 * 1 but 2! = 2 * 1! since 1! = 1 TRIVIAL CASE
Recursion - Example • So 5! = 5 * 4 * 3 * 2 * 1 Or 5! = 5 * 4! Can be solved Recursively • Or in general n! = n * n-1 * n-2 * …* 3 * 2 * 1 Or n! = n * (n-1)!
Recursion in Computer Languages • Implemented by calling a function or procedure in the body of that same function or procedure. • must be prevented from consuming excessive computing resources • Factorial Psuedocode factorial N if N <=1 (then factorial = 1) (else factorial = N * factorial[N-1])
Recursive Programming • Pros • Recursive description --- simple, elegant, and easy to explain and understand. • Recursive implementation --- straightforward to build and verify. • Cons • Can be difficult to understand at first. • In some programming languages not as efficient as iteratively • Can be difficult to program • circularity infinite loop MUST PUT IN A STOP
Why use Recursion? • So if can be less efficient and difficult to understand and program, why use recursion? • The problem/program may be easier to understand, solve and program using recursion • When you have a recursive description recursive solution is the most direct solution path • Usually creating an easy to verify code is more important than creating the most efficient code
Recursion in NetLogo • Draw a spiral from the outside in:
Recursion in NetLogo • Iteratively • Specify initial line length Interative Draw • While (condition?), repeat • Turtle draws a line • Turtle turns right • Reduce line length
Recursion in NetLogo • Recursively • Specify initial line length Recursive Draw • Turtle draws a line • Turtle turns right • Draw a new line with a reduced length But we forgot something! We Forgot The STOP!
Recursion in NetLogo • Recursively • Specify initial line length Recursive Draw • If (condition?) STOP • Turtle draws a line • Turtle turns right • draw a new live with a reduced length
Important Note For every recursive algorithm…… ….. There is an equivalent iterative (looping) algorithm!!
Summary • Recursion: CS method • The solution depends on the solution to smaller instances of the same problem • In most programming languages a function or procedure calling itself in the code • Pros: shorter, easier to understand, more elegant • Cons: often not as efficient as iterative and can be difficult to program • Why use recursion? • The problem/program is easier to understand using recursion • The problem is easier to solve using recursion