데이터

제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-10

Leah (리아) 2025. 10. 27. 19:19
반응형

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() 내장 함수와 비교

👉 이번 강의는 “재귀의 본질을 이해하는 첫걸음” 으로,
수학적 사고와 프로그래밍적 사고를 함께 훈련할 수 있는 중요한 단원이었다.

 

반응형