본문 바로가기
알고리즘&자료구조

재귀함수 - 팩토리얼

by do_ng 2021. 1. 26.
	// 팩토리얼 재귀 함수 
	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