All Articles

알고리즘 - 재귀 용법(Recursive call)

재귀 용법(Recursive call, 재귀 호출)이란

함수 안에서 동일한(자기 자신) 함수를 호출하는 형태. 스택형으로 관리되는 대표적인 예시다.

recursive call

재귀 용법 예시

팩토리얼 구하기

def factorial(num):
  if num <= 1:
    return num
  return num * factorial(num - 1)
def factorial(num):
  if num <= 1:
    return num
  return_value = num * factorial(num - 1)
  return return_value

리스트 합 구하기

def sum_list(nums):
  if len(nums) == 1:
    return nums[0]
  sum_value = nums[0] + sum_list(nums[1:])
  return sum_value

회문 판별하기

회문이란, 순서를 반대로 해도 동일한 단어를 말한다. (level, refer, 토마토 등)

def palindrome(word):
  if len(word) <= 1:
    return True
  if word[0] == word[-1]:
    return palindrome(word[1:-1])
  return False

입력값이 1이 될 때까지 연산하기

def num_one(n):
  if n == 1:
    return n
  if n % 2 == 1:
    return num_one(3*n+1)
  return num_one(n//2)

합 조합 수 알아내기

입력값을 1, 2, 3의 합으로 나타낼 때, 조합 수가 총 몇 가지인지 출력하기 (참고, 1+2+1과 2+1+1은 다른 조합)

def func(num):
  if num == 1:
    return 1
  elif num == 2:
    return 2
  elif num == 3:
    return 4
  return func(num-1) + func(num-2) + func(num-3)

재귀함수 밉다… 너무 헷갈린다…