[Algorithms] 재귀함수

yookyungmin·2023년 10월 15일
0

알고리즘에 취약해서 공부를 하던중 블로그 포스팅을 하려고 합니다
DFS, BFS 재학습중 재귀함수부터 간단하게 포스팅을 합니다.

재귀 함수

  • 자기 자신을 다시 호출하는 함수, 이를 통해 반복문을 사용하지 않고도 문제를 해결할 수 있습니다.

Base case, Recursive Case 로 구분

  • Base case : 재귀 호출을 멈추는 조건을 나타냅니다.
  • Recursive Case: 재귀 호출이 반복적으로 일어나는 부분입니다.

예시

1부터 n까지 정수를 곱하는 팩토리얼 함수를 재귀함수로 작성한 코드입니다.

public static int factorial(int n ){
	//Base case: n이 1 이하일 경우 1을 반환
	if(n <=1) {
    	return 1;
    }
    //Recursive case : n-1에 대한 팩토리얼 값을 구하고 n과 곱셈
    else{
    	return n+factorial(n-1);
    }
}

위의 함수에서 Base case는 n이 1 이하일 경우이며, 이 경우 1반환.
Recursive case는 n-1 에 대한 팩토리얼 값을 구하고 n과 곱셈하는 부분입니다. 이러한 방법으로 재귀적으로 문제를 해결 가능합니다.

주의점

  • 너무 많은 재귀 호출은 스택 오버 플로우를 일으킬 수 있습니다.
  • 재귀 호출을 멈추는 Base case를 반드시 포함
  • 재귀 함수를 이용하면 반복문 대신 문제를 간결하고 쉽게 해결할 수 있지만 가독성이 떨어지므로 적절한 사용 필요

참고
https://adjh54.tistory.com/194

0개의 댓글