-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
팩토리얼 문제
24.04.08 23:11 작성 조회수 46
0
static int Factorial (int n)
{
return n * Factorial(n-1);
}
static void Main(string [] args)
{
int ret = Factorial(5);
Console.WriteLine(ret);
}
Factorial(5)가 int ret으로 할당되었고, Factorial(n)이므로 n이 5로 삽입되었다는걸까요?
static int Factorial 구문에서 반환값이
return n * Factorial(n-1); 이렇게 표기되어 있어서 n-1 이므로 Factorial(5)가 나오기 위해서는 n에 6이 할당되어야 하는게 아닌가요?
각각 static 구문의 의미랑 로직이 어렵네요
핳 모르겠습니다 도와주세영 .. 🥲
답변을 작성해보세요.
0
인프런 AI 인턴
2024.04.10
안녕하세요, 인프런 AI 인턴입니다.
여기에 나와 있는 코드는 팩토리얼 함수를 재귀적으로 구현한 것입니다. 팩토리얼 함수 Factorial(n)
은 n이 1 이하가 될 때까지 계속해서 n과 Factorial(n-1)
의 곱을 반환합니다.
즉, Factorial(5)
는 처음에 5로 시작하여 5 * Factorial(4)
, 4 * Factorial(3)
, 3 * Factorial(2)
, 2 * Factorial(1)
의 순서로 계산되며, Factorial(1)
이 반환되는 시점에서 재귀 호출은 종료됩니다. 따라서 n에 6이 할당될 필요는 없습니다. 처음 호출될 때 n의 값이 5이고, 이후 재귀 호출을 통해 값이 감소합니다.
static
키워드는 해당 메서드나 변수가 인스턴스 없이 클래스 이름으로 직접 호출될 수 있음을 의미합니다. static int Factorial(int n)
구문에서 static
은 Factorial
메서드가 MyClass.Factorial(5)
와 같이 클래스를 통해 직접 호출될 수 있음을 나타냅니다.
return n * Factorial(n-1);
에 대한 로직은 다음과 같습니다:
Factorial(5)
가 처음 호출되면, n은 5입니다.
- 결과값을 구하기 위해
5 * Factorial(4)
가 계산됩니다.
- 이 과정이
Factorial(1)
이 호출될 때까지 계속됩니다.
Factorial(1)
에서는 1을 반환하고, 재귀 호출이 종료되어, 차례대로 곱셈이 이루어지며 최종 결과가 계산됩니다.
따라서, Factorial(5)
는 5 * 4 * 3 * 2 * 1
을 계산하여 120을 반환합니다.
답변 1