팩토리 질문입니다.
215
32 câu hỏi đã được viết
2 * factorial(1) =2
3 * factorial(2) =6
4 * factorial(3) =24
5 * factorial(4) =120
앞에 one 이 2 ->3 ->4 -> 5 로 어떻게 변화하는지 궁금합니다. ++ 기호가 들어간것도 아닌데요 .
스택개념으로
5 * factorial(4) =120가 마지막에 찍히는건 알고 있습니다.
Câu trả lời 2
0
팩토리얼이라는 게 더 정확한 명칭입니다.
우선 팩토리얼은 중고등학교 정규 과정에서 배우는 재귀 개념에서 나온 것입니다.
one의 변화는 2->3->4->5의 변화가 아닙니다.
int returnValue = one * methodFactorial(one - 1);
여기서 one * methodFactorial(one - 1);이 될 때
처음 5를 입력한 값이 methodFactorial 내부에서 5 - 1이 되어 4가 됩니다.
그러면서 그 다음 로직을 실행하지 않고 다시 methodFactorial이라는 메서드를 실행하는 것입니다.
System.out.println(one + " * factorial(" + (one - 1) + ") = " + returnValue);
이 구문이 있지요?
이 구문은
if (one == 0 || one == 1) {
return 1;
}
이걸 만날 때까지 실행되지 않습니다.
더 좋은 방법은
if (one == 0 || one == 1) {
return 1;
}
int returnValue = one * methodFactorial(one - 1);
이 두 구문 사이에
System.out.println("one : " + one);
이걸 찍어보는 것입니다.
그러면 5 -> 4 -> 3-> 2의 흐름으로 값이 변하는 것을 확인하실 수 있습니다.
그리고 2부터 계산식이 발동되어 다시 순차적으로 되돌아가면서 값이 더해지는 것입니다.
사실 재귀 함수는 어려운 개념입니다.
하지만 알아두시면 좋습니다.
재귀함수 개념을 활용하여 재귀쿼리를 사용하실 수 있습니다.
재귀쿼리는 계층형 메뉴를 보여줄 때 곧잘 사용됩니다.
쿼리의 경우엔 지원되는 명령어가 있으며
자바 언어에서 재귀 코드는 자주 사용되지 않습니다.
좀 더 조언을 드리자면 재귀 함수처럼 리턴값을 확인하기 복잡한 코드는 잘 짜지 않습니다.
재귀 메서드로 간단하게 끝낼 수 있는 계산식도 어지간해서는 객체지향 개념으로 메서드를 짜서
처리를 합니다.
도움이 되셨길 바랍니다.
build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)
0
14
1
예외처리 3강 문의
0
17
1
챌린지 시작일 문의
0
24
0
26년2회 실기기출은 언제쯤...
0
38
2
진짜화면이랑달라서못해먹겟어요먹겟어요
0
50
1
네이버 API | '검색 - 책' API 제공 중단
0
36
2
ArticleReadService 관련 질문
0
26
1
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
62
1
이론 공부법 요약본 버전 업데이트 문의
0
35
2
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
45
1
해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.
0
23
1
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
44
2
질문 드립니다.
0
299
1
팩토리얼 질문드립니다.
0
276
1
자바 패키지 질문
1
348
1
JDK 문의
1
243
1
11:26~(생성자 실습)부터 질문있어요
1
267
2
강의소스
1
325
1
안녕하세요. 강사님
1
326
2
강사님 혹시 wms 나 erp 시스템 개발 si에서 경험해 보신적있나요?
0
1295
4
리눅스 질문드립니다.
0
522
1
수업 1: 56 질문드립니다.
0
1291
7
안녕하세요. 강의 잘 듣고있습니다. ~^^
0
190
1
강사님 혹시 현업에서 JPA 많이 쓰나요?
0
674
1

