// 팩토리얼 재귀 함수
public static int factorial_recursive(int n) {
if(n<=1) return 1; // n이 1 또는 0일경우 1을 리턴함 ex) 1! = 1 , 0! = 1
return n * factorial_recursive(n-1);
}
public static void main(String[] args){
int result = factorial_recursive(4);
System.out.println(result);
}
factorial_recursive() 함수를 계속 호출했을 때 가장 마지막에 호출된 함수가 작업을 끝내야지 그 앞의 함수가 작업을 수행하고 비로소 처음 호출했던 함수가 작업을 실행 후 종료된다.
가장 마지막에 호출된 함수가 먼저 작업을 수행한다고 해서 재귀함수는 스택 자료구조와 동일하다고 볼 수 있다.
// 팩토리얼 반복 함수
public static int factorial_recursive(int n) {
int result = 1;
for(int i=1;i<=n;i++) {
result *= i;
}
return result;
}
public static void main(String[] args){
int result = factorial_recursive(4);
System.out.println(result);
}
재귀 함수 대신에 반복문을 통해서 팩토리얼을 표현할 수 있다.
반복문보다 재귀함수를 통해 표현한 코드가 더 간결한 것을 알 수 있다.
'알고리즘&자료구조' 카테고리의 다른 글
이코테 - 음료수 얼려 먹기(DFS) (0) | 2021.01.27 |
---|---|
BFS,DFS (0) | 2021.01.27 |
이코테 - 게임개발 (0) | 2021.01.26 |
이코테 - 왕실의 나이트 (0) | 2021.01.24 |
이코테 - 상하좌우(구현) (0) | 2021.01.23 |