////
Search
Duplicate
☺️

5. 재귀 용법

생성일
2022/07/03 08:59
태그
1.
재귀 용법
함수 안에서 동일한 함수를 호출하는 형태
2.
재귀 용법 이해
예제를 풀어보며, 재귀 용법을 이해해보기
예제
팩토리얼을 구하는 알고리즘을 Recursive Call을 활용해서 알고리즘 작성하기
예제 - 분석하기
간단한 경우부터 생각해보기
2! = 1 x 2
3! = 1 x 2 x 3
4! = 1 x 2 x 3 x 4
규칙 n! = n x (n-1)!
1. 함수를 하나 만든다.
2.
함수(n)은 n > 1 이면 return n x 함수(n-1)
3.
함수(n)은 n = 1 이면 return n
예제 - 코드 레벨로 적어보기
public class RecursiveCall { public int factorialFunc(int n) { if(n>1) {
Java
복사
예제 - 시간 복잡도와 공간 복잡도
factorial(n) 은 n-1 번의 factorial() 함수를 호출해서, 곱셈을 함
일종의 n-1 번 반복문을 호출한 것과 동일
factorial() 함수를 호출할 때마다, 지역변수 n이 생성됨
시간 복잡도/공간 복잡도는 O(n-1) 이므로 결국, 둘 다 O(n)
3.
재귀 호출의 일반적인 형태
간단한 메서드 레벨로 보기로 함
// 일반적인 형태1function(입력) { if (입력> 일정값) {// 입력이 일정 값 이상이면return function(입력- 1);// 입력보다 작은 값 }else { return 특정값;// 재귀 호출 종료 } }
Plain Text
복사
// 일반적인 형태2function(입력) { if (입력<= 일정값) {// 입력이 일정 값보다 작으면return 특정값// 재귀 호출 종료 } return function(입력- 1); }
Plain Text
복사
재귀 호출은 스택의 전형적인 예
함수는 내부적으로 스택처럼 관리된다.