티스토리 뷰


[C언어 소스] 팩토리얼(factorial) 구하는 프로그램 예제 소스


오늘은 C언어 프로그램 소스 중에 팩토리얼(factorial) 값을 구하는 프로그램 예제 소스에 대해서 알아보도록 하겠습니다.
 

팩토리얼을 구하는 방법은
재귀함수(함수를 여러번 호출하는 방법), 반복문(for, while 등)을 이용하는 방법이 있습니다.


이 두 가지 방법을 알아보도록 하겠습니다. 



1. 재귀함수를 이용해서 팩토리얼을 구하는 방법

 

먼저 재귀함수를 이용해서 팩토리얼을 구하는 방법에 대해서 알아보도록 하겠습니다. 

아래의 소스에서 눈여겨 보셔야 할 부분은 Factorial(int n) 함수 입니다. 재귀함수에 대한 소스를 이해하지 못하시는 분들을 위해 예를 들어 설명을 드리도록 하겠습니다.

재귀함수에 대해서 잘 알고 계신 분들은 바로 아래의 소스를 보시면 됩니다. 이해가 안되시는 분만 제 설명을 들어보시기 바랍니다.

예를 들어 아래와 같은 재귀함수가 있다고 합시다.

void Recurse(int n)

{

if(n>0)

Recurse(n-2);

cout<<n<<" ";

}


좀 감을 잡으셨나요?
흐름에 따라가기만 하면 됩니다^^


그러면 아래의 소스를 보시죠^^
 

// 팩토리얼(재귀호출)
#include <stdio.h>

int Factorial(int n);

void main()
{
	int number = 0;
	
	// Factorial(5)를 호출
	// 결과값을 number에 대입
	number = Factorial(5);

	// 결과값 출력
	printf("%d\n", number);
}

// # Function : 팩토리얼 계산 함수(재귀)
// 1인 경우 : 1을 반환
// 1이 아닌 경우 : 자기 자신 * Factorial(n-1)
int Factorial(int n)
{
	if(n == 1)
	{
		return 1;
	}
	else 
	{
		return n * Factorial(n - 1);
	}
}


2. 반복문을 이용해서 팩토리얼 값 구하기


이번에는 반복문을 이용해서 팩토리얼 값을 구해보도록 하겠습니다.


 
// 반복문 팩토리얼
#include <stdio.h>

int Factorial(int n);

void main()
{
	int number = 0;
	
	// Factorial(5)를 호출
	// 결과값을 number에 대입
	number = Factorial(5);

	// 결과값 출력
	printf("%d\n", number);
}

int Factorial(int n)
{
        int i = 0 ;
	int result = 1;

	// n부터 1까지 반복
	for(i = n; i > 0; i--)
	{
		// i값을 계속 곱해서 result에 대입
		result *= i;
	}

	return result;
}



결과값을 확인해 볼까요?



위 두 소스의 결과는 같습니다. 팩토리얼값을 구하는데 있어 재귀함수를 호출해서 값을 구하느냐 아니면 반복문을 이용해서 값을 구하느냐의 방법이 다를 뿐이지요. 

그러면 실제로 실행해서 팩토리얼 값을 구해보도록 하겠습니다. 

5의 팩토리얼 값은 5x4x3x2x1=120이죠.
결과값으로 120이 나왔네요^^
 




궁금하신 것이 있다면 댓글로 남겨주세요^^


댓글