for문
과 while문
이 대표적임
명확하게 몇 번 반복할지 (혹은 조건이 언제 끝날지) 를 알 때 주로 사용
for i in range(5):
print(i)
# 0, 1, 2, 3, 4 출력
i = 0
while i < 5:
print(i)
i += 1
# 0, 1, 2, 3, 4 출력
재귀1함수는 함수가 자기 자신을 다시 호출하는 함수
큰 문제를 동일한 구조의 더 작은 문제로 쪼갤 때 유용
스택과도 연이 있음. 차곡차곡 쌓은 뒤 다시 풀어나가는 형태의 흐름이다.
문제를 더 작은 문제로 쪼개서 해결할 때 직관적
종료 조건(base case)이 반드시필요함. 없으면 무한히 자기 자신을 부름 → 에러 발생
반복문보다 코드가 간단해질 수 있으나, 메모리 소모가 크고 속도가 느릴 수 있음(특히 깊은 재귀)
대표적인 예: 트리 구조 탐색, 하노이의 탑, 분할정복 알고리즘 등
for문과 만나면 지랄나니 만나지 못하게 다리를 걸어라, 두번 걸어라
```py def factorial(n): if n == 1: return 1 return n * factorial(n-1)
print(factorial(5)) # 120 출력
<br>
### 피보나치 수열
```py
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)
print(fib(5)) # 5 출력
각주 :
어떤 것을 정의할 때 자기 자신을 참조하는 것을 의미 ↩