2. What is recursion
• Looping without a loop statement
• A function that is part of its own
definition
• Can only work if there’s a terminating
condition, otherwise it goes forever
(the base case)
3. A recursive function
• N Factorial
• 1! = 1
2! = 1 x 2 = 2
3! = 1 x 2 x 3 = 2! x 3 = 6
N! = 1 x 2 x 3 x .... (N-2) x (N-1) x N = (N-1)! x N
4. How recursion is handled
• Every time a function is called, the
function values, local variables,
parameters and return addresses are
pushed onto the stack.
• Over and Over again
• You might run out!
5. Dry-running a recursive call
Procedure Printsequence(n)
n <- n-1
if n > 1 then
Printsequence(n)
endif
output(n)
EndProcedure
6. Dry-running a recursive call
Procedure Printsequence(n)
n <- n-1
if n > 1 then
output(n)
Printsequence(n)
endif
EndProcedure
7. How to write a recursive
procedure
• Code the general case
Result = n * Factorial(n-1)
• Code the base case
Result = 1
• Ensure that the base case is reached
after a finite number of recursive calls