반응형
1. 재귀(Recursive):
- 함수(메소드) 내에서 자기자신을 다시 호출하는것을 의미한다.
- 완료되지 않은 함수를 다시 호출하는것
- 제일 첫번째로 호출된 함수가 가장 마지막에 종료가 되는 특성
- 탈출 조건이 있어야한다. 없으면 무한 반복 한다.
1) 예시1 - 간단한 출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class b_01_Recursive { static void Recursive(int num) { if(num <=0)//탈출조건 return;//탈출 System.out.printf("Recursive call! %d \n", num); Recursive(num-1);//자기자신을 다시 호출 } public static void main(String[] args) { Recursive(3);//제일 첫번째로 호출된 메소드 가장 마지막에 종료 } } | cs |
1 2 3 | Recursive call! 3 Recursive call! 2 Recursive call! 1 | cs |
2) 예시2 - 팩토리얼의 재귀적 특성
6! = 6x5x4x3x2x1=720
6! = 6x5! = 720
f(n-1)에서 자신의 함수를 다시 호출하고 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class b_02_Factorial { static int Factorial(int n) { if(n==0)//탈출 조건 return 1;//탈출 else return n * Factorial(n-1);//자기자신을 다시 호출 } public static void main(String[] args) { System.out.printf("1! = %d \n", Factorial(1)); System.out.printf("2! = %d \n", Factorial(2)); System.out.printf("3! = %d \n", Factorial(3)); System.out.printf("4! = %d \n", Factorial(4)); System.out.printf("9! = %d \n", Factorial(6)); } } | cs |
1 2 3 4 5 6 | 1! = 1 2! = 2 3! = 6 4! = 24 9! = 720 | cs |
반응형
'Basic > 자료구조,알고리즘' 카테고리의 다른 글
재귀의 활용(피보나치 수열) (0) | 2018.11.28 |
---|---|
재귀의 활용(피보나치 수열) (0) | 2018.11.28 |
재귀(Recursion) (0) | 2018.11.28 |
성능분석 방법(빅오 표기법) (0) | 2018.11.27 |
자료구조와 알고리즘 (0) | 2018.11.26 |