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

C# 팩토리얼(계승) 계산 방법 – while 루프로 쉽게 구현하기

C#에서 팩토리얼(계승)을 계산하려면 while 루프를 활용하여 숫자가 1이 아닐 때까지 반복 처리하는 방법을 사용할 수 있습니다.

여기서 n은 팩토리얼을 구하고자 하는 값입니다. 기본적인 반복 로직은 다음과 같습니다.

int res = 1;
while (n != 1) {
    res = res * n;
    n = n - 1;
}

위 코드는 매 반복마다 res에 현재 n 값을 곱한 후, n을 1씩 감소시키는 방식으로 동작합니다.

동작 원리 예시: 5! (5의 팩토리얼)

예를 들어 5!(5 팩토리얼)를 계산한다고 가정해 보겠습니다. 이 경우 n = 5로 시작합니다.

루프 반복 1회차

n=5
res = res * n → res = 1 * 5 = 5

루프 반복 2회차

n=4
res = res * n → res = 5 * 4 = 20

루프 반복 3회차

n=3
res = res * n → res = 20 * 3 = 60

루프 반복 4회차

n=2
res = res * n → res = 60 * 2 = 120

이런 식으로 모든 반복이 진행되면 최종적으로 n이 1이 되어 루프가 종료되고, 결과값으로 120이 반환됩니다.

전체 코드 예제

아래는 위 로직을 실제 C# 프로그램으로 구현한 완전한 예제입니다.

using System;
namespace MyApplication {
    class Factorial {
        public int display(int n) {
            int res = 1;
            while (n != 1) {
                res = res * n;
                n = n - 1;
            }
            return res;
        }
        static void Main(string[] args) {
            int value = 5;
            int ret;
            Factorial fact = new Factorial();
            ret = fact.display(value);
            Console.WriteLine("Value is : {0}", ret);
            Console.ReadLine();
        }
    }
}

실행 결과

Value is : 120

코드 설명

  • display 메서드: 매개변수로 받은 정수 n에 대해 while 루프를 사용해 팩토리얼을 계산하고 그 결과를 반환합니다.
  • Main 메서드: 프로그램의 진입점으로, 값 5를 전달하여 Factorial 클래스의 인스턴스를 통해 결과를 출력합니다.
  • while 조건식: n != 1 조건 덕분에 n이 1에 도달하면 루프가 자동으로 종료됩니다.

이처럼 while 루프를 활용하면 재귀 호출 없이도 간단하고 효율적으로 팩토리얼을 계산할 수 있습니다. 다만 음수나 0 입력 시의 예외 처리를 추가하면 더욱 견고한 코드가 됩니다.