Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- FTP
- deep learning
- dns
- 알고리즘
- 프로토콜
- 네트워크 관리사
- Protocol
- 기본 정렬
- 자격증
- 네트워크 관리사 2급
- network
- 네트워크 자격증
- Windows Server
- 파이썬
- Django
- 딥러닝
- Algorithm
- Dynamic Programming
- 패스트캠퍼스
- 자료구조
- 네트워크
- 머신러닝
- 서브넷마스크
- IPV4
- Machine learning
- ICQA
- 실기
- 코딩테스트
- 밑바닥부터 시작하는 딥러닝
- Python
Archives
- Today
- Total
쳉지로그
[알고리즘 이론] 재귀 용법 (Recursive Call, 재귀 호출) 본문
재귀 용법(Recursive Call, 재귀 호출)
- 함수 안에서 동일한 함수를 호출하는 형태
- 파이썬에서는 재귀 함수 깊이가 1000 이하가 되어야 한다,
- 종료 조건이 항상 있어야 한다,
- ⚠️ 재귀 용법 사용 시 주의할 점!
- 파이썬에서는 재귀 함수 깊이가 1000 이하가 되어야 한다,
- 종료 조건이 항상 있어야 한다,
- 재귀 함수는 내부적으로 스택처럼 관리된다.
재귀 용법의 일반적인 형태
""" 일반적인 형태 1 """
def function_1(입력):
if 입력 > 일정값: # 입력값이 일정 값 이상이면
return function(입력 - 1) # 입력값보다 작은 값
else:
return 일정값, 입력값, 또는 특정값 # 재귀 호출 종료
""" 일반적인 형태 2 """
def function_2(입력):
if 입력 <= 일정값: # 입려값이 일정 값보다 작으면
return 일정값, 입력값, 또는 특정값 # 재귀 호출 종료
function(입력보다 작은 값)
return 결과값
예시) 팩토리얼(factorial)
""" 규칙 생각하기! """
# n! = n x (n-1)!
def factorial_1(n):
if n > 1:
return n * factorial_1(n-1)
else:
return n
def factorial_2(n):
if n <= 1:
return n
else:
n * factorial_2(n-1)
예시) 1부터 num까지의 곱을 출력하는 함수
def multiple_without_recursion(num):
result = 1
for i in range(1, num+1):
result = result * i
return result
# 재귀 사용
def multiple_with_recursion(num):
if num <= 1:
return num
return num * multiple_with_recursion(num-1)
예시) 리스트의 합을 리턴하는 함수
def sum_with_recursion(data):
if len(data) <= 1: # 리스트의 원소가 1개일 경우
return data[0]
else:
return data[0] + sum_with_recursion(data[1:])
'코딩테스트 > 알고리즘 이론' 카테고리의 다른 글
[알고리즘 이론] 병합 정렬 (Merge Sort) (0) | 2021.12.08 |
---|---|
[알고리즘 이론] 동적 계획법(Dynamic Programming) (0) | 2021.12.08 |
[알고리즘 이론] 선택 정렬 (Selection Sort) (0) | 2021.12.07 |
[알고리즘 이론] 삽입 정렬 (Insertion Sort) (0) | 2021.12.06 |
[알고리즘 이론] 버블 정렬 (Bubble Sort) (0) | 2021.12.06 |
Comments