정의
Recursion
피보나치 수열 (5p)
Recursion은 어떻게 정의되는가
Base case : 솔루션이 nonrecursive하게 정의되는 케이스
General (recursive) case
Recursive algorithm
→ 이 두개로 솔루션이 표현되는 것
→ infinite sequence of function calls를 만드는 것을 피해야 함
Recursive Solution
General format
void recursiveFunction(parameters){
if (some conditions for which answer is known){
solution statement // base case
}
else {
recursiveFunction() // general case
}
}
Ex1. Factorial 함수 (recursive)
int recursiveFactorial(int number) {
if (number == 0) {
return 1; // base case
}
return number * recursiveFactorial(number - 1); //general case
}
Ex2. Combinations 함수 (recursive)
int combinations(int n, int k) {
// Base cases
if (k == 1) {
return n;
}
else if (k == n) {
return 1;
}
// Recursive case
else {
return combinations(n - 1, k - 1) + combinations(n - 1, k);
}
}
Recursive Function 검증
Ex3. x to power of n
int power(int x, int n) {
if (n == 0)
return 1; // base case
else
return x * power(x, n - 1); // general case
}