Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 숫자의 팩토리얼(계승)을 구하는 프로그램 작성법

숫자 n이 주어졌을 때, 이 숫자의 팩토리얼(계승)을 구하는 것이 과제입니다. 팩토리얼은 해당 숫자를 그보다 작거나 같은 정수 값들과 차례대로 곱하여 계산합니다.

팩토리얼은 다음과 같이 계산됩니다.

0! = 1
1! = 1
2! = 2X1 = 2
3! = 3X2X1 = 6
4! = 4X3X2X1 = 24
5! = 5X4X3X2X1 = 120
.
.
.
N! = n * (n-1) * (n-2) * . . . . . . . . . * 1

예시

입력 1 -: n=5
   출력 : 120
입력 2 -: n=6
   출력 : 720

팩토리얼을 구하는 방법은 여러 가지가 있습니다.

  • 반복문(loop)을 사용하는 방법
  • 재귀(recursion)를 사용하는 방법 — 효율성 측면에서는 권장되지 않음
  • 함수(function)를 사용하는 방법

아래는 함수를 활용한 구현 예시입니다.

알고리즘

Start
Step 1 -> 팩토리얼을 계산할 함수 선언
   int factorial(int n)
      IF n = 0
         return 1
      End
      return n * factorial(n - 1)
Step 2 -> main() 함수에서
   변수를 int num = 10 으로 선언
   factorial(num)) 출력
Stop

C 언어 구현

예시 코드

#include<stdio.h>
// 팩토리얼을 구하는 함수
int factorial(int n){
   if (n == 0)
   return 1;
   return n * factorial(n - 1);
}
int main(){
   int num = 10;
   printf("%d의 팩토리얼은 %d입니다", num, factorial(num));
   return 0;
}

실행 결과

10의 팩토리얼은 3628800입니다

C++ 구현

예시 코드

#include<iostream>
using namespace std;
// 팩토리얼을 구하는 함수
int factorial(int n){
   if (n == 0)
   return 1;
   return n * factorial(n - 1);
}
   int main(){
   int num = 7;
   cout << num << "의 팩토리얼은 " << factorial(num) << endl;
   return 0;
}

실행 결과

7의 팩토리얼은 5040입니다

위 예제에서 사용된 재귀 함수는 n이 0이 될 때까지 자기 자신을 호출하며 곱셈을 수행합니다. 재귀 방식은 코드가 간결하지만, 호출 스택을 반복적으로 사용하기 때문에 큰 숫자에 대해서는 성능 저하가 발생할 수 있다는 점을 유의해야 합니다.