프로그램에서 어떤 함수가 자기 자신을 다시 호출하는 것
분할정복, 동적계획법, 되추적기법 등에 사용됨

int fibo(int num) {
if (num <= 1) {
return num;
}
return fibo(num-1) + fibo(num-2);
}
void reverseArray(char s[], int start, int end) {
if (start >= end) {
return;
}
swap(s + start, s + end);
reverseArray(s, start + 1, end - 1);
}
long long factorial(long long a) {
if (a <= 1) {
return 1;
}
long long result = a * factorial(a - 1);
while (result % 10 == 0) {
result /= 10;
}
result %= 10000;
return result;
}
double power(double x, int n) {
if (n == 0) {
return 1.0;
}
else {
return fmod(x * power(x, n-1), 1000.0);
}
}
double power(double x, int n) {
double y;
if (n == 0) {
return 1.0;
}
else if (n % 2 == 1) {
y = power(x, (n-1)/2);
return fmod(x * y * y, 1000.0);
}
else {
y = power(x, n/2);
return fmod(y * y, 1000.0);
}
}
int euclid(int a, int b) {
int r;
if (b == 0) {
return a;
}
r = a % b;
return euclid(b, r);
}