co-code 님의 블로그

재귀 함수 본문

python

재귀 함수

co-code 2026. 6. 24. 22:00
  • 재귀 함수
    • 함수가 자기 자신을 다시 호출하는 방법
      • 기동 조건 : 언제 멈출 것인가? 반드시 지정
      • 재귀 단계 : 문제를 똑같은 형태의 더 작은 문제로 쪼개어 자기 자신을 호출하는 부분
  • 예시 문제1. 카운트 다운 : '3, 2, 1 발사' 출력
# 방법 1) for문
for i in range(3,-1,-1):
    if i != 0:
        print(i)
    else:
        print('발사')
>>>	3
	2
	1
	발사

# 방법 2) 재귀함수
def countdown(n):
    #n : 카운트다운 시작 수치
    #기동 조건 : n이 0이 되면 함수 호출을 그만 둔다. (발사 출력을 생성)
    if n==0:
        print('발사')
        return
    #수행하는 작업
    print(n)

    #재귀 단계 :  n에서 1을 뺀 값을 이용하여 자기 자신을 다시 호출한다.
    countdown(n-1)

countdown(3)
>>>	3
	2
	1
	발사
  • 예시 문제2. 리스트 [1,2,3,4,5]의 합계를 구하시오.
list_1=[1,2,3,4,5]
# 방법 1) for문
result=0

for i in list_1:
    result += i
print(result)
>>> 15

# 방법 2) 재귀 함수
def sum_list(arr):
    #arr에 대입이 되는 원본의 데이터를 유지
    #재귀가 멈추는 조건 : arr의 길이가 0이 되는 경우
    if len(arr)==0:
        return 0

    return arr[0] + sum_list(arr[1:])

sum_list(list_1)
>>> 15

  • 예시 문제3. 피보나치 수열 (1, 1, 2, 3, 5, 8, 13, 21, ....) 구현하기
def fibonacci(n):
    #n : 피보나치 수열의 몇번째 데이터를 확인할 것인가?
    if n == 1 or n == 2 : 
        return 1
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(6))
print(fibonacci(7))
>>>	8
	13

'python' 카테고리의 다른 글

Transformer  (0) 2026.06.18
Doc2Vec  (0) 2026.06.11
Word2Vec, FastText  (0) 2026.06.10
LSA(Latent Semantic Analysis)  (0) 2026.06.04
TF-IDF(Term Frequency-Inverse Document Frequency)  (0) 2026.06.02