재귀함수란 함수 내에서 자기자신을 호출하는 함수를 말한다. 재귀함수는 함수를 실행하는 중간에 다시 함수가 호출되면 함수의 복사본을 만들어서 복사본을 실행하게 됩니다.
#include <stdio.h>
void Recursive(int num)
{
if (num <= 0)
return;
printf("Recursive call! %d \n", num);
Recursive(num - 1);
}
int main(void)
{
Recursive(3);
return 0;
}
이 코드처럼 재귀함수에는 반드시 종료조건이 있어야 한다. 재귀함수에 종료조건이 없다면 무한히 반복되는 코드가 실행되면서 원하는 동작을 하지 않을 것이다.
재귀함수를 이용해서 팩토리얼을 구현한 코드를 보자.
#include <stdio.h>
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;
}
팩토리얼의 정의
n! = n x (n-1) x (n-2) x (n-3) x (n-4) x ... 2 x 1
코드로 나타내면 팩토리얼 함수를 호출할 때 n을 매개변수로 넣고 n을 1씩 감소하여 n이 0이 될떄까지 반복하고
그 수들을 곱해주면 팩토리얼을 구할 수 있다.
'PROGRAMMING LANGUAGE > C' 카테고리의 다른 글
14강 포인터 (0) | 2021.09.15 |
---|---|
13강 배열과 문자열 (0) | 2021.09.15 |
11강 변수의 존재기간과 접근범위 (0) | 2021.09.15 |
10강 전처리기 (0) | 2021.09.14 |
9강 for (0) | 2021.09.14 |