재귀 용법(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)
재귀함수 밉다… 너무 헷갈린다…