Algorithm/Algorithm
C언어, 팩토리얼(factorial)
OdOp 관리자
2023. 12. 11. 10:00
반응형
팩토리얼을 c언어로 구현해 보도록 하겠습니다.
팩토리얼은 그 수보다 작거나 같은 모든 양의 정수의 곱입니다.
예를 들어 4!은 1 * 2 * 3 * 4 즉, 24가 되겠죠.
그렇다면 n! = 1 * 2 * ..... * (n - 1) *n이 될것입니다.
아래의 함수는 n을 nb라는 인자를 받아서 계산할 것입니다.
재귀함수를 이용하지 않는 버전과 이용하는 버전 이렇게 2가지를 한번 살펴보도록 하겠습니다.
우선 사용하지 않는 버전입니다.
int OdOp_iterative_factorial(int nb)
{
int answer;
answer = 1;
if (nb < 0)
return (0);
while (nb > 1)
{
answer *= nb;
nb--;
}
return (answer);
}
재귀함수를 사용하는 버전입니다.
void OdOp_factorial(int *answer, int nb)
{
*answer *= nb;
if (nb >= 2)
OdOp_factorial(answer, --nb);
}
int OdOp_recursive_factorial(int nb)
{
int answer;
answer = 1;
if (nb < 0)
return (0);
else if (nb < 2)
return (1);
else
{
OdOp_factorial(&answer, nb);
}
return (answer);
}
하시는 프로젝트 잘 마무리 하시길 바랍니다.
반응형