팩토리얼 문제
270
작성한 질문수 2
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 구문의 의미랑 로직이 어렵네요
핳 모르겠습니다 도와주세영 .. 🥲
답변 1
0
안녕하세요, 인프런 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을 반환합니다.
Generic에 대한 질문 있습니다.
0
94
2
2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?
0
200
2
다형성 캐시 문제
0
111
3
.
0
70
1
프로퍼티 강의 질문 있습니다.
0
77
1
이후 커리 질문
0
85
1
static
0
90
2
강의에는 새로운 클래스 파일을 생성하면...
0
72
1
생성자의 이름 선언
0
64
1
9:03 Divide(10 , 3) 부분 질문입니다
0
87
1
깃허브 관련 질문 있습니다.
0
238
1
비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문
0
249
1
C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!
0
305
2
Activator 질문있습니다
0
331
1
이넘 타임 선언 질문
0
344
1
Sort 오름차순, 내림차순
0
323
1
질문 있습니다.
0
248
1
Sort함수 질문있습니다.
0
264
1
다형성 함수 질문 있습니다.
0
221
1
질문이 있습니다.
0
225
1
섹션2 연습문제 질문입니다.
0
213
1
안녕하세요~서버에 대해 질문이 있습니다.
1
281
1
텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ
0
393
1
visual studio2022에서 c# 프로젝트 로드가 안됩니다
0
1158
3





