
- 함수 스스로가 자기 자신을 다시 호출하는 함수
- 문제를 더 작은 단위의 동일한 문제로 쪼개서 해결할 때 주로 사용
- 이미지 출처: 나노 바나나 프로 (Nano Banana Pro)
알고리즘
- 종료 조건 (Base Case)
- 재귀 호출을 멈추는 조건
- 종료 조건이 없으면 함수가 영원히 자신을 호출하다가 컴퓨터 메모리가 꽉 차서 프로그램이 강제로 종료되는 '스택 오버플로우(Stack Overflow)' 에러가 발생
- 재귀 호출 (Recursive Case)
- 자기 자신을 호출하면서, 문제를 더 작은 단위로 쪼개는 부분
문제 유형
- 팩토리얼 (Factorial): 5! = 5 X 4 X 3 X 2 X 1
def factorial(n):
if n == 1:
return 1
return n * factorial(n - 1)
print(factorial(5))
코드 예시 (Java)
import java.io.*;
import java.util.*;
public class Main {
static Scanner sc = new Scanner(System.in);
static void run(int cnt) {
if(cnt ==3)return;
System.out.println("good morning");
run(cnt+1);
}
public static void main(String[] args) {
run(0);
}
}```