inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 기본을 위한 강의 1부

팩토리얼

팩토리 질문입니다.

189

paikdabang

작성한 질문수 32

0

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가 마지막에 찍히는건 알고 있습니다.

java

답변 2

0

paikdabang

도움이 많이 되었습니다. 감사합니다.

0

JeongTaeHyun

팩토리얼이라는 게 더 정확한 명칭입니다.

우선 팩토리얼은 중고등학교 정규 과정에서 배우는 재귀 개념에서 나온 것입니다.

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부터 계산식이 발동되어 다시 순차적으로 되돌아가면서 값이 더해지는 것입니다.

사실 재귀 함수는 어려운 개념입니다.

하지만 알아두시면 좋습니다.

재귀함수 개념을 활용하여 재귀쿼리를 사용하실 수 있습니다.

재귀쿼리는 계층형 메뉴를 보여줄 때 곧잘 사용됩니다.

쿼리의 경우엔 지원되는 명령어가 있으며

자바 언어에서 재귀 코드는 자주 사용되지 않습니다.

좀 더 조언을 드리자면 재귀 함수처럼 리턴값을 확인하기 복잡한 코드는 잘 짜지 않습니다.

재귀 메서드로 간단하게 끝낼 수 있는 계산식도 어지간해서는 객체지향 개념으로 메서드를 짜서

처리를 합니다.

도움이 되셨길 바랍니다.

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

9

2

질문있습니다

0

21

1

1번 문제 질문입니다.

0

24

1

26년 1회 실기 해설 강의

0

43

2

음악플레이어 문제 중 코드질문

0

20

1

잠겨버린 사물함 시간초과 관련 질문입니다.

0

18

1

도메인 모델에서 관계와 규칙을 구분하는 방법

0

31

2

프로젝트 질문 문의

0

38

1

문제와 풀이4 문제점

0

32

2

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

41

1

스프링부트 버전 문의드립니다.

0

31

1

53번 4-1 자료 오류 있는 것 같습니다.

0

65

2

질문 드립니다.

0

266

1

팩토리얼 질문드립니다.

0

247

1

자바 패키지 질문

1

309

1

JDK 문의

1

201

1

11:26~(생성자 실습)부터 질문있어요

1

225

2

강의소스

1

297

1

안녕하세요. 강사님

1

297

2

강사님 혹시 wms 나 erp 시스템 개발 si에서 경험해 보신적있나요?

0

1203

4

리눅스 질문드립니다.

0

489

1

수업 1: 56 질문드립니다.

0

1234

7

안녕하세요. 강의 잘 듣고있습니다. ~^^

0

172

1

강사님 혹시 현업에서 JPA 많이 쓰나요?

0

636

1