본문 바로가기

Basic/자료구조,알고리즘

재귀(Recursive)

반응형

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