728x90
재귀함수의 호출
void recursive()
{
printf("Recursive call!\n");
recursive();
}
- recursive안에 다시 recursive함수를 호출하고 또 호출하고.. 이런식으로 반복
- recursive 함수가 호출되면 recursive 복사본을 만들고 또 그 복사본에서 다시 복사본을 만드는 식으로 진행
- 재귀함수의 탈출 조건을 명시하지 않으면 무한 반복 재귀호출이 됨
void recursive(int num)
{
if (num <= 0) return; // 재귀함수 탈출 조건 설정
printf("Recursive call! %d\n", num);
recursive(num - 1);
}
int main(void)
{
Recursive(3);
return 0;
}
- 재귀함수의 디자인 사례 : 팩토리얼 함수
int Factorial(int n)
{
if(n==0) return 1; // 탈출조건
else
return n * Factorial(n-1); // 재귀
}
int main(void)
{
printf("1! = %d \n", Factorial(1));
printf("2! = %d \n", Factorial(2));
printf("3! = %d \n", Factorial(3));
printf("4! = %d \n", Factorial(4));
printf("9! = %d \n", Factorial(9));
return 0;
}
728x90
'Programming > Data Structure' 카테고리의 다른 글
열혈 자료구조 - 2-3. 하노이 타워 (0) | 2020.11.29 |
---|---|
열혈 자료구조 - 2-2. 재귀의 활용 (0) | 2020.11.29 |
열혈 자료구조 - 1-2. 알고리즘의 성능 분석 방법(4) (0) | 2020.11.29 |
열혈 자료구조 - 1-2. 알고리즘의 성능 분석 방법(3) (0) | 2020.11.29 |
열혈 자료구조 - 1-2. 알고리즘의 성능 분석 방법(2) (0) | 2020.11.29 |