Вы находитесь на странице: 1из 8

Recursive Algorithms

CSC 3102

0.1

B.B. Karki, LSU

Definition and Examples

Recursive algorithm invokes (makes reference to) itself repeatedly

until a certain condition matches


Examples:

Computing factorial function Tower of Hanoi puzzle Digits in binary representation


Non-recursive algorithm is executed only once to solve the problem.

CSC 3102

0.2

B.B. Karki, LSU

Analyzing Efficiency of Recursive Algorithms


Steps in mathematical analysis of recursive algorithms:
Decide on parameter n indicating input size. Identify algorithms basic operation Determine worst, average, and best case for input of size n If the basic operation count also depends on other conditions. Set up a recurrence relation and initial condition(s) for C(n)-the number of

times the basic operation will be executed for an input of size n


Alternatively count recursive calls.

Solve the recurrence to obtain a closed form or estimate the order of

magnitude of the solution (see Appendix B)


CSC 3102
0.3

B.B. Karki, LSU

Example 1: Recursive Evaluation of n !


Definition of factorial function F(n)= n!: n ! = 1 2 (n-1) n 0! = 1 Algorithm F(n) //Compute n! recursively //Input: A nonnegative integer n //Output: The value of n! if n = 0 return 1 else return F(n-1) * n

Recurrence relation for the number of multiplications:

M(n) = M(n-1) + 1 M(0) = 0

for n > 0 initial condition

Solve the recurrence relation using the method of backward substitution:

M(n) = M(n-1) + 1 = M(n-2) + 2 = M(n-3) +3 = .. = M(n-i) + i =. = M(n-n) + n M(n) = n


CSC 3102
0.4

B.B. Karki, LSU

Example 2: Tower of Hanoi Puzzle


Given: n disks of different sizes and

three pegs. Initially all disks are on the first peg in order of size, the largest being on the bottom
Problem: move all the disks to the third

Peg 1

Peg 2

Peg 3

peg, using the second one as an auxiliary.


One can move only one disk at a time,

and it is forbidden to place a larger disk on the top of a smaller one. Recursive solution: Three steps

involved are
First move recursively n - 1 disks from

peg 1 to peg 2 (with peg 3 as auxiliary) Move the largest disk directly from peg 1 to peg 3 Move recursively n - 1 disks from peg 2 and peg 3 (using peg 1 as auxiliary)

http://www.mazeworks.com/hanoi/
CSC 3102
0.5

B.B. Karki, LSU

Tower of Hanoi: Recurrence Relation


Recurrence for the number of moves

M(n) = M(n-1) + 1 + M(n-1) for n > 1 = 2 M(n-1) + 1 M(1) = 1 initial condition

Tree of recursive calls made by the recursive algorithm

Solve the recurrence relation using the

n n-1 n-1 n-2


..

method of backward substitution: M(n) = 2 M(n-1) + 1 = 22 M(n-2) + 22 - 1 n-2 = 23 M(n-3) + 23 - 1 n-2 == 2i M(n-i) + 2i - 1 =. .. = 2n-1 M(n - (n-1)) + 2n-1 - 1 = 2n-1 + 2n-1 - 1 2 2 n- 1 M(n) = 2
1 1 1 1
CSC 3102
0.6

n-2
..

2 1 1 1

2 1

B.B. Karki, LSU

Example 3: Binary Recursive


Problem: Investigate a recursive version of binary algorithm, which finds

the number of binary digits in the binary representation of a positive decimal integer n.
Recursive relation for the number of additions made by the algorithm.

A(n) = An/2 + 1 for n > 1 A(1) = 0 initial condition For n = 1, no addition is made because no recursive call is executed.

Algorithm BinRec (n) //Input: A positive decimal integer n //Output: The number of binary digits in ns binary representation if n = 1 return 1 else return BinRec (n/2) +1

CSC 3102

0.7

B.B. Karki, LSU

Binary Recursive: Solution

Use backward substitution method to solve the problem only for n = 2k. Smoothness rule implies that the observed order of growth is valid for all values of n.

A(2k) = A(2k-1) + 1

= [A(2k-2) + 1] + 1 = A(2k-2) + 2 = [A(2k-3) + 1] + 2 = A(2k-3) + 3 = A(2k-i) + i = A(2k-k) + k =k A(20) = A(1) = 0 = log2 n n = 2k A(n) = log2 n (log n) Exact solution is A(n) = log2 n

CSC 3102

0.8

B.B. Karki, LSU