01 · 자연수: 0, 후속자, 재귀
자연수: 0, 후속자, 재귀¶
모든 자연수를 0 또는 후속자로 표현하고 그 두 경우에서 같음과 덧셈을 읽습니다.
이 장을 읽기 전에
연산자가 특수 메서드를 부르고 데코레이터가 반환 시 로그를 남긴다는 것을 압니다.
이 장을 마치면
- ‘자연수: 0, 후속자, 재귀’의 수학적 정의를 자신의 말로 설명하기
- 그 정의가 Python 데이터로 표현되는 방법 찾기
- 실제 코드에서 작은 실행 과정을 예측하기
수학적 정의
0과 후속자는 페아노 공리의 출발점입니다. `n + 0 = n`, `n + S(m) = S(n + m)`은 덧셈의 재귀적 정의입니다.
데이터 표현
`pre=None`은 0, `pre=n`은 `S(n)`입니다. 2는 int 필드가 아니라 `S(S(0))` 사슬입니다.
Python 구현
`0` / `S(n)` → `NaturalNumber.pre`; recursive addition → `__add__`
함께 읽을 구현과 테스트
수학적 정의
수학적 정의¶
0과 후속자는 페아노 공리의 출발점입니다. n + 0 = n, n + S(m) = S(n + m)은 덧셈의 재귀적 정의입니다.
데이터 표현
데이터 표현¶
pre=None은 0, pre=n은 S(n)입니다. 2는 int 필드가 아니라 S(S(0)) 사슬입니다.
Python 구현
Python 구현¶
__eq__는 0과 후속자를 구분해 선행자를 비교하고, __add__의 두 분기는 두 덧셈 식과 직접 대응합니다.
이 강의에서 사용하는 정확한 대응:
실행 과정
실행 과정¶
2 + 2에서 오른쪽 수가 0까지 줄어든 뒤 기저 로그와 바깥쪽 재귀 로그가 차례로 나옵니다.
실행 전 예측
기저 로그, 마지막 재귀 로그, 최종 값을 적으세요.
실험 · 자연수: 0, 후속자, 재귀
실행 전
⌘ / Ctrl + Enter
출력
먼저 예측을 적고 실행하세요.
테스트로 확인
테스트로 확인¶
테스트는 0의 구별, 후속자의 단사성, 덧셈 식을 확인하지만 수학적 귀납법을 대신하지 않습니다.
범위와 한계
범위와 한계¶
단항 사슬은 구조가 잘 보이지만 값에 따라 비용이 커지므로 작은 입력만 사용합니다.