본문 바로가기

PROGRAMMING LANGUAGE/C

12강 재귀함수

재귀함수란 함수 내에서 자기자신을 호출하는 함수를 말한다. 재귀함수는 함수를 실행하는 중간에 다시 함수가 호출되면 함수의 복사본을 만들어서 복사본을 실행하게 됩니다.

#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