재귀(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)
'프로그래밍 > Algorithm' 카테고리의 다른 글
다익스트라 알고리즘(Dijkstra Algorithm) (0) | 2021.08.29 |
---|---|
너비 우선 탐색(BFS : Breadth-First Search) (0) | 2021.08.18 |
퀵 정렬(Quicksort) (0) | 2021.08.15 |
선택 정렬(SelectionSort) (0) | 2021.08.04 |
이진 탐색(Binary search) (0) | 2021.06.29 |