프로그래밍/Algorithm

재귀(Recursion)

Baesj 2021. 8. 11. 19:44

재귀(Recursion)는 자신을 정의할 때 자기 자신을 재참조하는 방법을 뜻이다.

재귀 함수는 자기 자신을 호출하는 함수이다.

반복문을 재귀 함수를 통해 구현 할 수도 있다.

자기 자신을 호출하기 때문에 무한 호출하는 것을 주의해야 한다.

모든 정보를 저장하기 때문에 메모리를 많이 소비한다.(스택이 계속 쌓인다)

 

재귀함수로 구현한 팩토리얼

import java.util.Scanner;

public class Factorial {
    //자신을 다시 호출하는 것이다
    //함수형 프로그래밍에서 사용된다
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        System.out.println(fac(input));
        sc.close();

    }
    public static int fac(int n){
        if(n<=1){
            return 1;
        }else{
            return fac(n-1)*n;
        }
    }
    //재귀함수가 실행되는 것을 보면
    //5가 들어가게되면
    //fac(4)*5 -> fac(3)*4*5 -> fac(2)*3*4*5 -> fac(1)*2*3*4*5 -> 1*2*3*4*5
    //결국 1*2*3*4*5가 리턴되게 된다
}

 

 

참고

https://ko.wikipedia.org/wiki/%EC%9E%AC%EA%B7%80_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)