Saltar a contenido

01 · Naturales: cero, sucesor y recursión

Naturales: cero, sucesor y recursión

Representa cada natural como cero o como sucesor y lee la igualdad y la suma directamente en esos dos casos.

Antes de este capítulo

Ya sabes que los operadores llaman métodos especiales y que el decorador registra al regresar.

Al terminar podrás
  • explicar con tus palabras la definición matemática de «Naturales: cero, sucesor y recursión»
  • señalar cómo se representa esa definición en datos de Python
  • predecir una ejecución pequeña a partir del código real
Definición matemática

Cero y sucesor pertenecen al punto de partida de Peano. `n + 0 = n` y `n + S(m) = S(n + m)` son definiciones recursivas de la suma, no axiomas nuevos.

Representación de datos

`pre=None` representa cero y `pre=n` representa `S(n)`. El 2 es la cadena `S(S(0))`, no un campo que contenga el int 2.

Implementación en Python

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

Implementación y pruebas para leer junto al capítulo

peano/natural_number.py · tests/test_natural_number.py

Definición matemática

Definición matemática

Cero y sucesor pertenecen al punto de partida de Peano. n + 0 = n y n + S(m) = S(n + m) son definiciones recursivas de la suma, no axiomas nuevos.

Representación de datos

Representación de datos

pre=None representa cero y pre=n representa S(n). El 2 es la cadena S(S(0)), no un campo que contenga el int 2.

Implementación en Python

Implementación en Python

__eq__ distingue cero de sucesor y compara predecesores; las dos ramas de __add__ reproducen el caso base y el recursivo.

La correspondencia exacta usada en el curso:

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

Traza de ejecución

Traza de ejecución

En 2 + 2, el operando derecho disminuye hasta cero. Al regresar, aparece primero el caso base y después las dos llamadas externas.

Predicción antes de ejecutar

Escribe la línea del caso base, la última línea recursiva y el valor final.

Experimento · Naturales: cero, sucesor y recursión Sin ejecutar
⌘ / Ctrl + Enter
Salida
Escribe primero tu predicción y después ejecuta.

Comprobación con pruebas

Comprobación con pruebas

Las pruebas nombran la separación de cero, la inyectividad del sucesor y las ecuaciones de suma. Una prueba finita no sustituye a la inducción.

Alcance y límites

Alcance y límites

La cadena unaria muestra la estructura, pero su coste crece con el valor; usa entradas pequeñas.

¿Qué afirmación describe correctamente la implementación de «Naturales: cero, sucesor y recursión»?