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 입력 시의 예외 처리를 추가하면 더욱 견고한 코드가 됩니다.