04. 재귀함수 (Recursive Call)

정의
재귀용법(=재귀함수) 란?
- 함수 안에서 동일한 함수를 호출하는 형태
- 재귀 호출은 스택의 전형적인 예이다
- 함수는 내부적으로 스택처럼 관리된다
TIP
고급 정렬 알고리즘에서 재귀용법을 사용하므로 고급 정렬 알고리즘을 익히기 전에 재귀용법을 먼저 익히는 것이 좋다
재귀 용법의 이해 (예시 - 팩토리얼)
- factorial(num) 은 서번의 factorial 함수를 호출해서 곱셈을 한다
- 일종의 num - 1 번의 반복문을 호출한 것과 동일하다
- factorial () 함수를 호출할 때 마다 지역변수 num 이 생성된다
- 시간 복잡도 O(num-1) , 공간 복잡도 O(num) 이므로 둘 다 O(n) 이다

재귀함수 (Recursive Call)
public class RecursiveCall { public static void main(String[] args) { int result = factorial(5); System.out.println(result); } private static int factorial(int num) { // 5 * factorial(4) * factorial(3) * factorial(2) * factorial(1)-1 if (num < 2) { return 1; } else { return num * factorial(num - 1); } } }
패캠 강의 풀이
public class RecursiveCall2 { public static void main(String[] args) { int result = factorial(5); System.out.println(result); } private static int factorial(int num) { if (num > 1) return num * factorial(num - 1); else return num; } }
이 글은
(새창열림)
본 저작자 표시 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
'25. 자료 구조와 알고리즘 > 나의 알고리즘' 카테고리의 다른 글
06. 재귀함수 (Recursive Call) - 홀수와 짝수에 따라 분기처리 (0) | 2021.09.11 |
---|---|
05. 회문 (Palindrome) (0) | 2021.09.11 |
03. 삽입 정렬 (Insertion Sort) (0) | 2021.09.09 |
02. 선택 정렬 (Selection Sort) (0) | 2021.09.08 |
01. 버블 정렬 (Bubble Sort) (0) | 2021.09.08 |
댓글
이 글 공유하기
다른 글
-
06. 재귀함수 (Recursive Call) - 홀수와 짝수에 따라 분기처리
06. 재귀함수 (Recursive Call) - 홀수와 짝수에 따라 분기처리
2021.09.11 -
05. 회문 (Palindrome)
05. 회문 (Palindrome)
2021.09.11 -
03. 삽입 정렬 (Insertion Sort)
03. 삽입 정렬 (Insertion Sort)
2021.09.09 -
02. 선택 정렬 (Selection Sort)
02. 선택 정렬 (Selection Sort)
2021.09.08
댓글을 사용할 수 없습니다.