# 결과값이 어떻게 될까요 ?
def func_C() :
print('C1')
print('C2')
def func_B():
print('B1')
func_C()
print('B2')
def func_A():
print('A1')
func_B()
print('A2')
func_A()
# 기본재귀함수 활용
# <https://pythontutor.com/visualize.html#mode=edit>
# 위 링크에서 아래 코드 입력하고 순서 확인
def sum_list(num):
if num ==1 : # BASE CASE
return 1
else :
return num + sum_list(num-1)
print(sum_list(5))
visualising data structures and algorithms through animation - VisuAlgo
반드시 알아야하는 알고리즘 top 8 - 1. 재귀 알고리즘
재귀의 장단점
# 여러가지 문제 해결법 : 1부터 주어진 숫자까지 모두 더하는 함수
# 가우스 공식을 이용한 코드
def sum1(num):
return num*(num+1)/2
# 반복문을 이용한 코드
def sum2(num):
total = 0
for num in range(num+1):
total += num
return total
# 재귀함수 : 하고자 하는 바가 명확하게 드러난다.
def sum3(num):
if num == 1 :
return 1
else :
return num+ sum3(num-1)
print(sum1(10))
print(sum2(10))
print(sum3(10))
# 재귀 예시 1: 팩토리얼
def factorial(n):
if n == 1 : #base case
return 1
else:
return n * factorial(n-1)
# 재귀 예시 2 : 2단 출력
def multi_table_2(n):
if n == 0:
print('구구단 2단')
else:
multi_table_2(n-1)
print(f'2 * {n} = {2*n}')
print(multi_table(9))
뿌리로부터 가지가 뻗어나오는 모양의 자료구조 + 계층적인 자료구조다.
이진트리 : 뿌리로부터 뻗어나오는 가지가 최대 2개인 트리