재귀함수 (Recursive)
재귀함수가 호출되면, 재귀함수의 복사본이 만들어져서 복사본이 호출되어 실행된다.
재귀함수의 탈출 조건이 중요하다.
다음은 팩토리얼(factorial) 값을 반환하는 함수를 재귀적으로 구현한 코드다.
정수 n의 팩토리얼 n!을 수식적으로 나타내면 다음과 같다.
n! = n * (n-1) * (n-2) * ..... 2 * 1;
정수 n 에 대하여
n>=1인 경우 n * f(n-1)을 반환하고
n==0인 경우 1을 반환한다
#include <stdio.h>
int Recursive(int num)
{
if (num == 0)
return 1;
else
return Recursive(num - 1)*num;
}
int main()
{
printf("%d!\n", Recursive(8));
printf("%d!\n", Recursive(5));
printf("%d!\n", Recursive(3));
printf("%d!\n", Recursive(2));
printf("%d!\n", Recursive(1));
return 0;
}
728x90
'알고리즘' 카테고리의 다른 글
[C] 이진 탐색 알고리즘의 재귀적 구현 (0) | 2017.04.19 |
---|---|
[C] 피보나치 수열 (0) | 2017.04.19 |
[C] 이진 탐색 알고리즘 (Binary Search) (배열) (0) | 2017.04.18 |
[C] 순차 탐색 알고리즘 (Linear Search) (배열) (0) | 2017.04.18 |
[C] 버블정렬(Bubble Sort) (0) | 2017.04.18 |