Recursion is a technique that involves defining a function in terms of itself via self-referential calls. It allows for looping without using loop statements. A recursive function must have a base case, which provides the terminating condition to stop the infinite recursion, otherwise the function will recurse forever. To implement recursion, each recursive call pushes the function values, variables, parameters and return address onto the call stack, popping them back off after completion.
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