recursion

Post on 22-Nov-2014

342 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Recursion

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)

A recursive function

• N Factorial• 1! = 11! = 1

2! = 1 x 2 = 22! = 1 x 2 = 23! = 1 x 2 x 3 = 2! x 3 = 63! = 1 x 2 x 3 = 2! x 3 = 6N! = 1 x 2 x 3 x .... (N-2) x (N-1) x N = (N-1)! x N N! = 1 x 2 x 3 x .... (N-2) x (N-1) x N = (N-1)! x N

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!

Dry-running a recursive call

Procedure Printsequence(n)

n <- n-1

if n > 1 then

Printsequence(n)

endif

output(n)

EndProcedure

Dry-running a recursive call

Procedure Printsequence(n)

n <- n-1

if n > 1 then

output(n)

Printsequence(n)

endif

EndProcedure

How to write a recursive procedure

• Code the general caseResult = n * Factorial(n-1)

• Code the base caseResult = 1

• Ensure that the base case is reached after a finite number of recursive calls

top related