Recursion
Recursion is useful for solving problems with a naturally repeating strcuture.
5.1 REcursion Structure
def fact(n):
if n == 0:
return 1
else:
return fact(n-1) * n
def count_up(n):
if n == 1: #base case
print(1)
else:
count_up(n-1)
print(n)
def sum_digits(n):
if n < 10:
return n
else:
return (n % 10) + sum_digits(n // 10)
5.2 Summary
5.3 Iteration VS Recursion
5.4 Cascade
def cascade(n):
if n < 10:
print(n)
else:
print(n)
cascade(n // 10)
print(n)
def cascade(n):
print(n)
if n > 10:
cascade(n // 10)
print(n)
5.5 Fibonacci
def fib(n):
if n == 0:
return 1
elif n == 1:
return 0
else:
return fib(n - 2) + fib(n - 1)
5.6 Count Partitions
def count_part(n, m):
if n == 0: return 1
elif n < 0 or m == 0: return 0
else:
return count_part(n - m, m) + count_part(n, m - 1)