Lecture 12 Recursion
Lecture 12 Recursion
1 / 32
Recursion Recursion
Learning Objectives
2 / 32
Recursion Recursion
Recursion: definition
3 / 32
Recursion Recursion
4 / 32
Recursion Recursion
5 / 32
Recursion Recursion
6 / 32
Recursion Recursion
7 / 32
Recursion Recursion
8 / 32
Recursion Recursion
9 / 32
Recursion Recursion
10 / 32
Recursion Recursion
11 / 32
Recursion Recursion
13 / 32
Recursion Recursion
14 / 32
Recursion Recursion
Recursion: question
How many recursive calls are made when computing the sum of the list
[2,4,6,8,10]?
1 6
2 5
3 4
4 3
15 / 32
Recursion Recursion
Recursion: question
16 / 32
Recursion Recursion
Recursion: example
17 / 32
Recursion Recursion
Recursion: example
18 / 32
Recursion Recursion
Recursion: example
19 / 32
Recursion Recursion
Recursion: example
20 / 32
Recursion Recursion
Recursion: example
21 / 32
Recursion Recursion
Recursion: example
22 / 32
Recursion Recursion
Recursion: example
Compute factorial for an integer n.
(
1 n <= 1
FACT (n) =
n ∗ FACT (n − 1) otherwise
23 / 32
Recursion Recursion
Recursion: example
Compute factorial for an integer n.
(
1 n <= 1
FACT (n) =
n ∗ FACT (n − 1) otherwise
FACT(n)
nf := n
while n != 1:
n := n - 1
nf := n * nf
return nf
24 / 32
Recursion Recursion
Recursion: example
Compute factorial for an integer n.
(
1 n <= 1
FACT (n) =
n ∗ FACT (n − 1) otherwise
FACT(n)
nf := n
while n != 1:
n := n - 1
nf := n * nf
return nf
FACT(n)
if n = 1:
return 1
else:
return n \cdot FACT(n-1)
25 / 32
Recursion Recursion
Recursion: example
Give iterative and recursive algorithms for finding the n th term of the
sequence defined by:
a0 = 1, a1 = 3, a2 = 5, an = an−1 + (an−2 )2 + (an−3 )3 .
26 / 32
Recursion Recursion
Recursion: example
Give iterative and recursive algorithms for finding the n th term of the
sequence defined by:
a0 = 1, a1 = 3, a2 = 5, an = an−1 + (an−2 )2 + (an−3 )3 .
I(n):
if n < 3:
return 2n + 1
x := 1, y := 3, z := 5
for i := 1 to n-2:
w := z + y * y + x * x * x
x := y, y := z, z := w
return z
27 / 32
Recursion Recursion
Recursion: example
Give iterative and recursive algorithms for finding the n th term of the
sequence defined by:
a0 = 1, a1 = 3, a2 = 5, an = an−1 + (an−2 )2 + (an−3 )3 .
I(n):
if n < 3:
return 2n + 1
x := 1, y := 3, z := 5
for i := 1 to n-2:
w := z + y * y + x * x * x
x := y, y := z, z := w
return z
R(n):
if n < 3:
return 2n + 1
else:
return R(n-1) + POWER(R(n-2), 2) + POWER(R(n-3), 3)
28 / 32
Recursion Recursion
29 / 32
Recursion Recursion
30 / 32
Recursion Recursion
Sometimes by accident,
R(n):
if n == 1:
return 1
if n mod 2 == 0:
return R( n/2 )
else:
return R( 3*n-1 )
31 / 32
Recursion Recursion
Reading Material
32 / 32