재귀 함수 (Recursive Function)

From_A_To_Z·2026년 1월 25일

알고리즘

목록 보기
3/10

  • 함수 스스로가 자기 자신을 다시 호출하는 함수
  • 문제를 더 작은 단위의 동일한 문제로 쪼개서 해결할 때 주로 사용
  • 이미지 출처: 나노 바나나 프로 (Nano Banana Pro)

알고리즘

  1. 종료 조건 (Base Case)
  • 재귀 호출을 멈추는 조건
  • 종료 조건이 없으면 함수가 영원히 자신을 호출하다가 컴퓨터 메모리가 꽉 차서 프로그램이 강제로 종료되는 '스택 오버플로우(Stack Overflow)' 에러가 발생
  1. 재귀 호출 (Recursive Case)
  • 자기 자신을 호출하면서, 문제를 더 작은 단위로 쪼개는 부분

문제 유형

  • 팩토리얼 (Factorial): 5! = 5 X 4 X 3 X 2 X 1
def factorial(n):
    # 1. 종료 조건 (Base Case): n이 1이면 멈춤
    if n == 1:
        return 1
    
    # 2. 재귀 호출 (Recursive Case): n * (n-1)!
    return n * factorial(n - 1)

print(factorial(5)) # 결과: 120

코드 예시 (Java)

import java.io.*; 
import java.util.*;//

public class Main {

	static Scanner sc = new Scanner(System.in);
	//함수의 선언 -> 어떤일을 할지? 일단 먼저 정해놔!
	//void형 함수 -> return
	static void run(int cnt) {
		//재귀함수는 반드시 ->어디선간 stack강제 해지를 해줘야함
		if(cnt ==3)return;
		System.out.println("good morning");
		run(cnt+1);
	}
	
	public static void main(String[] args) {
		//함수의 호출 -> 실제로 일을 시킴, Stack에 쌓이고 일을 함
		//good moring을 3번만 찍자!
		//f5 ->step into(함수, 메서드 안으로 진입), f6-> step over(함수가 진행됬다고 치고 한줄씩 무조건 내려감)
		run(0);
		
	}
}```
profile
What goes around comes around.

0개의 댓글