본문 바로가기

카테고리 없음

[C++] 재귀함수(Recursive)로 계승(factorial, 팩토리얼)구하기

int f(int n)
{
	if(n == 0)return 1;
	else return n * f(n - 1);
}

void main()
{
	int su;

	x:
	cout << "팩토리얼을 구할 수를 입력해 주세요 : ";
	cin >> su;

	if(su < 0)
	{
		cout << "잘못된 범위를 입력하셨습니다.!" << endl << endl;
		goto x;
	}

	cout << f(su) << endl;
}

프로그램 실행화면


팩토리얼을 재귀함수를 사용해서 만든 프로그램이다. 재귀 함수는 많이 사용하지는 않지만 알아두면 좋은 녀석이다. 재귀함수를 사용해야만 만들 수 있는 알고리즘이 있기 때문이다.


자기가 자기를 호출하는 형식이라 이해하고 잘 활요하기가 쉽지는 않지만 말이다. 재귀함수에는 항상 끝나는 조건식이 필요하다. 그것이 if(n == 0)return 1; 이부분이다.


모든 재귀함수에는 끝나는 점이 필요하다. 이것만 주의해서 사용하면 프로그램이 실행중에 뻗어버리는 일은 없을 것이다.