일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- autosize
- webpack
- useAppDispatch
- ESlint
- 무한 스크롤
- 타입 좁히기
- RTK Query
- Jest
- SSR
- TS
- dfs
- 리터럴 타입
- 태그된 유니온
- CI/CD
- Promise
- map
- 결정 알고리즘
- Cypress
- 인터섹션
- async/await
- recoil
- 이분 검색
- app router
- tailwind
- 반공변성
- 공변성
- React
- 호이스팅
- 투포인터
- CORS
Archives
- Today
- Total
짧은코딩
재귀 함수 본문
반응형
DFS와 BFS를 구현하려면 재귀 함수도 이해해야 한다.
-재귀 함수의 종료 조건
재귀 함수를 사용할 때는 재귀 함수가 언제 끝날지 종료 조건을 꼭 명시해야 한다.
컴퓨터 내부에서 재귀 함수의 수행은 스택을 사용한다. 함수를 계속 호출했을 때 마지막에 호풀한 함수가 먼저 수행을 끝내야 그 앞의 함수 호출이 종료되기 때문이다. 연속해서 호풀되는 함수는 메인 메모리의 스택에 적재된다. 그래서 재귀 함수는 스택과 같다는 말이 틀린 말이 아니다.
# 반복적으로 구현한 n!
def factorial_iterative(n):
result = 1
# 1부터 n까지의 수를 차례대로 곱하기
for i in range(1, n + 1):
result *= i
return result
# 재귀적으로 구현한 n!
def factorial_recursive(n):
if n <= 1: # n이 1 이하인 경우 1을 반환
return 1
# n! = n * (n - 1)!를 그대로 코드로 작성하기
return n * factorial_recursive(n - 1)
# 각각의 방식으로 구현한 n! 출력(n = 5)
print('반복적으로 구현:', factorial_iterative(5))
print('재귀적으로 구현:', factorial_recursive(5))
재귀 함수 코드가 더 간결하다. 간결해진 이유는 재귀 함수가 수학의 점화식(재귀식)을 그대로 옮겼기 때문이다.
1. n이 0 혹은 1일 때, factorial(n) = 1
2. n이 1보다 클 때, factorial(n) = n * factorial(n-1)
여기서 종료 조건 n이 0 혹은 1일 때 이다.
반응형
'코딩 테스트(Python) > 이것이 취업을 위한 코딩 테스트다' 카테고리의 다른 글
음료수 얼려 먹기 (1) | 2022.05.17 |
---|---|
탐색 알고리즘 DFS/BFS (0) | 2022.05.12 |
게임 개발 (0) | 2022.05.10 |
왕실의 나이트 (0) | 2022.05.08 |
시각 (0) | 2022.05.07 |
Comments