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.
Você já sabe que operadores chamam métodos especiais e que o decorador registra ao retornar.
- 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
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.
`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.
`0` / `S(n)` → `NaturalNumber.pre`; recursive addition → `__add__`
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:
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.
Anote a linha do caso-base, a última linha recursiva e o valor final.
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.