Ir para o conteúdo

01 · Naturais: zero, sucessor e recursão

Naturais: zero, sucessor e recursão

Represente cada natural como zero ou sucessor e leia igualdade e adição diretamente nesses dois casos.

Antes deste capítulo

Você já sabe que operadores chamam métodos especiais e que o decorador registra ao retornar.

Ao terminar, você poderá
  • explicar com suas palavras a definição matemática de “Naturais: zero, sucessor e recursão”
  • apontar como essa definição é representada em dados Python
  • prever uma execução pequena a partir do código real
Definição matemática

Zero e sucessor pertencem ao ponto de partida de Peano. `n + 0 = n` e `n + S(m) = S(n + m)` são definições recursivas da adição, não novos axiomas.

Representação dos dados

`pre=None` representa zero e `pre=n` representa `S(n)`. O 2 é a cadeia `S(S(0))`, não um campo contendo o int 2.

Implementação em Python

`0` / `S(n)` → `NaturalNumber.pre`; recursive addition → `__add__`

Implementação e testes para ler junto com o capítulo

peano/natural_number.py · tests/test_natural_number.py

Definição matemática

Definição matemática

Zero e sucessor pertencem ao ponto de partida de Peano. n + 0 = n e n + S(m) = S(n + m) são definições recursivas da adição, não novos axiomas.

Representação dos dados

Representação dos dados

pre=None representa zero e pre=n representa S(n). O 2 é a cadeia S(S(0)), não um campo contendo o int 2.

Implementação em Python

Implementação em Python

__eq__ distingue zero de sucessor e compara predecessores; os dois ramos de __add__ reproduzem o caso-base e o recursivo.

A correspondência exata usada no curso:

`0` / `S(n)` → `NaturalNumber.pre`; recursive addition → `__add__`

Fluxo de execução

Fluxo de execução

Em 2 + 2, o operando direito diminui até zero. No retorno, o caso-base aparece antes das duas chamadas externas.

Previsão antes de executar

Anote a linha do caso-base, a última linha recursiva e o valor final.

Experimento · Naturais: zero, sucessor e recursão Não executado
⌘ / Ctrl + Enter
Saída
Primeiro escreva sua previsão; depois execute.

Verificação com testes

Verificação com testes

Os testes nomeiam a separação de zero, a injetividade do sucessor e as equações da adição. Testes finitos não substituem a indução.

Escopo e limites

Escopo e limites

A cadeia unária mostra a estrutura, mas o custo cresce com o valor; use entradas pequenas.

Qual afirmação descreve corretamente a implementação de “Naturais: zero, sucessor e recursão”?