Recursion (재귀)
함수 호출 도중에 자기 자신을 다시 호출하는 것
Base case가 필수 (기초, 종료, 탈출 조건)
Base case가 없으면 무한으로 자기 자신을 호출해서 stack overflow가 된다.
재귀함수를 만드는 방법
- 패턴을 찾는다. 즉, 점화식(Induction)을 만든다.
- Base case를 만든다.
예제1: Factorial !
Basis
0! = 1! = 1
Induction Step
n! = (n-1) * (n-2) * (n-3) * … 3 * 2 * 1
1 | def factorial(n): |
예제2: Fibonacci
Basis
fib(0) = fib(1) = 1
Induction Step
fib(n) = fib(n-1) + fib(n-2)
1 | def fib(n): |
Fibonacci Dynamic Programming
- Memorization (Top Down)
1 | f = [-1 for _ in range(100)] |
- Bottom Up
1 | f2 = [-1 for _ in range(100)] |
예제3: Hanoi Tower
1 | def hanoi(n, _from, _by, _to): |