01 · Натуральные числа: ноль, следующий и рекурсия
Натуральные числа: ноль, следующий и рекурсия¶
Представьте каждое натуральное число нулём или следующим и прочитайте равенство и сложение из этих случаев.
Вы знаете, что операторы вызывают специальные методы, а декоратор пишет журнал при возврате.
- объяснить своими словами математическое определение «Натуральные числа: ноль, следующий и рекурсия»
- показать его представление в данных Python
- предсказать небольшой запуск по настоящему коду
Ноль и операция следующего входят в исходные идеи Пеано. `n + 0 = n` и `n + S(m) = S(n + m)` — рекурсивные определения сложения.
`pre=None` означает ноль, `pre=n` — `S(n)`. Число 2 хранится цепочкой `S(S(0))`, а не полем int.
`0` / `S(n)` → `NaturalNumber.pre`; recursive addition → `__add__`
Математическое определение
Математическое определение¶
Ноль и операция следующего входят в исходные идеи Пеано. n + 0 = n и n + S(m) = S(n + m) — рекурсивные определения сложения.
Представление данных
Представление данных¶
pre=None означает ноль, pre=n — S(n). Число 2 хранится цепочкой S(S(0)), а не полем int.
Реализация на Python
Реализация на Python¶
__eq__ различает ноль и следующий и сравнивает предшественников; ветви __add__ точно соответствуют двум формулам.
Точное соответствие, используемое в курсе:
Ход выполнения
Ход выполнения¶
В 2 + 2 правый аргумент уменьшается до нуля. При возврате сначала появляется базовый случай, затем внешние вызовы.
Запишите базовую строку, последнюю рекурсивную строку и итог.
Сначала запишите прогноз, затем запускайте.
Проверка тестами
Проверка тестами¶
Тесты проверяют отличие нуля, инъективность следующего и формулы сложения, но не заменяют индукцию.
Область и ограничения
Область и ограничения¶
Унарная цепочка показывает структуру, но дорожает с числом; используйте малые входы.