Chapter 01. 기초 수학
피보나치 수열 & 팩토리얼 (Fibonacci & Factorial)
1. 피보나치 수열 (Fibonacci Sequence)
피보나치 수열은 앞의 두 항을 더해서 다음 항을 만드는 수열이다.
1,1,2,3,5,8,13,21,...1, 1, 2, 3, 5, 8, 13, 21, ...
공식적으로는

| 항 번호 | 수열 값 |
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 3 |
| 5 | 5 |
| 6 | 8 |
| 7 | 13 |
💡 앞선 두 항의 합으로 다음 항을 결정하는 구조는
자연의 성장 패턴(나뭇잎 배열, 달팽이 껍질 등) 에서도 자주 등장한다.
파이썬으로 피보나치 수열 구현
(1) 반복문을 이용한 구현
n = int(input("몇 번째 항까지 구할까요? "))
a, b = 1, 1
for i in range(n):
print(a, end=' ')
a, b = b, a + b
출력: 1 1 2 3 5 8 13 21 …
(2) 재귀함수를 이용한 구현
def fibonacci(n):
if n <= 2:
return 1
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(8)) # 21
💡 반복문은 효율적이고 빠르지만,
재귀함수는 논리 구조를 직관적으로 표현할 수 있어 개념 이해에 유리하다.
2. 팩토리얼 (Factorial)
팩토리얼은 1부터 n까지의 모든 자연수를 곱한 값을 의미한다.

| n | 계산식 | 결과 |
| 0! | – | 1 |
| 1! | 1 | 1 |
| 2! | 1×2 | 2 |
| 3! | 1×2×3 | 6 |
| 4! | 1×2×3×4 | 24 |
| 5! | 1×2×3×4×5 | 120 |
| 6! | 1×2×3×4×5×6 | 720 |
💡 0! = 1 로 약속하는 이유는,
수학적 일관성(조합식, 공집합 계산 등)을 유지하기 위함이다.
파이썬으로 팩토리얼 구현
(1) 반복문을 이용한 구현
n = int(input("팩토리얼을 구할 수를 입력하세요: "))
result = 1
for i in range(1, n+1):
result *= i
print(f"{n}! = {result}")
(2) 재귀함수를 이용한 구현
def factorial(n):
if n == 0:
return 1
return n * factorial(n-1)
print(factorial(5)) # 120
💡 팩토리얼은 피보나치 수열과 마찬가지로
자기 자신을 다시 호출하는 재귀적 구조를 가지고 있다.
* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
💡 생각 정리
피보나치 수열과 팩토리얼은 ‘재귀’의 사고를 익히는 최고의 예제였다.
모두 단순한 규칙을 반복 적용해 복잡한 계산을 만들어내며, 이를 코드로 옮길 때 논리적 구조를 단계적으로 표현하는 연습이 된다.
특히 두 개념의 공통점은,
“이전 단계의 결과를 다음 단계의 입력으로 사용한다”는 점이다.
이 사고는 수학뿐만 아니라 데이터 분석, 알고리즘, 머신러닝의 반복 학습 구조에도 깊이 연관된다.
🚀 적용점
- 프로그래밍 응용
- 재귀함수 기본 구조(if 조건 + return 자기호출)를 연습하기
- 반복문 vs 재귀문 실행 속도 비교 실습하기
- functools.lru_cache 를 이용한 피보나치 메모이제이션 구현
- 수학적 응용
- 팩토리얼은 조합(Combination), 확률, 순열(Permutation) 계산의 기초
- 피보나치 수열은 점화식, 알고리즘 시간복잡도 분석 (O(2ⁿ)) 에서 자주 등장
- 심화 확장
- 피보나치 → 골든비율(1.618)과의 관계 시각화
- 팩토리얼 → math.factorial() 내장 함수와 비교
👉 이번 강의는 “재귀의 본질을 이해하는 첫걸음” 으로,
수학적 사고와 프로그래밍적 사고를 함께 훈련할 수 있는 중요한 단원이었다.
'데이터' 카테고리의 다른 글
| 제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-12 (0) | 2025.10.30 |
|---|---|
| 제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-11 (0) | 2025.10.28 |
| 제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-09 (0) | 2025.10.27 |
| 제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-08 (0) | 2025.10.26 |
| 제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-07 (0) | 2025.10.24 |