"""
Python abril 2021
USA UN INTÉRPRETE ON LINE PYTHON 3
Esto es un comentario multilinea
Si usas replit.com primero LOGIN y después CREATE
Similar a la función factorial recursiva pero con suma
"""
def recursiva_suma(k):
"""
Python abril 2021
USA UN INTÉRPRETE ON LINE PYTHON 3
Esto es un comentario multilinea
"""
def recursiva_suma(k):
Vamos a analizar tu función paso a paso para recursiva_suma(5)
:
def recursiva_suma(k): if(k > 0): result = k + recursiva_suma(k - 1) print(result) else: result = 0 return result print("\n\nfunción recursiva suma, resultados") recursiva_suma(5)
recursiva_suma(5)
llama a 5 + recursiva_suma(4)
recursiva_suma(4)
llama a 4 + recursiva_suma(3)
recursiva_suma(3)
llama a 3 + recursiva_suma(2)
recursiva_suma(2)
llama a 2 + recursiva_suma(1)
recursiva_suma(1)
llama a 1 + recursiva_suma(0)
recursiva_suma(0)
devuelve 0
Ahora se empieza a resolver y a imprimir al regresar de la recursión:
recursiva_suma(1) = 1 + 0 = 1
→ imprime 1
recursiva_suma(2) = 2 + 1 = 3
→ imprime 3
recursiva_suma(3) = 3 + 3 = 6
→ imprime 6
recursiva_suma(4) = 4 + 6 = 10
→ imprime 10
recursiva_suma(5) = 5 + 10 = 15
→ imprime 15
función recursiva suma, resultados 1 3 6 10 15
👉 Entonces sí, efectivamente está calculando la suma de 5+4+3+2+1 = 15
,
pero además va mostrando las sumas parciales en cada paso.
Exacto, lo entendiste muy bien 👌
En este tipo de funciones recursivas, la resolución no se hace “de arriba hacia abajo”, sino al regresar de la última llamada (cuando llegamos al caso base).
En tu ejemplo:
La última llamada es recursiva_suma(0)
.
Esa devuelve el caso base (0
), y a partir de ahí las funciones que estaban “en espera” empiezan a resolver una por una y a imprimir los resultados:
recursiva_suma(1)
usa ese 0
, calcula 1 + 0 = 1
y lo imprime.
recursiva_suma(2)
usa el 1
, calcula 2 + 1 = 3
y lo imprime.
… y así hasta que llega otra vez arriba en recursiva_suma(5)
.
📌 En resumen:
La recursión baja hasta llegar al caso base.
Luego, al subir (retornar valores), es cuando realmente se hacen las operaciones y se imprimen los resultados.
Correcto 👍, no imprime 0 en recursiva_suma(0)
La razón es simple: en tu función, el print(result)
solo se ejecuta dentro del bloque if(k > 0)
.
if(k > 0): result = k + recursiva_suma(k - 1) print(result) # << solo se imprime aquí else: result = 0 # aquí NO hay print
Cuando llegamos a recursiva_suma(0)
:
Se cumple k == 0
, por lo tanto entra al else
.
Ahí asigna result = 0
y lo devuelve.
Como no hay print
en el else
, nunca se muestra el 0
.
Por eso la salida empieza en 1, 3, 6, 10, 15 y no incluye el 0
"""
T an bueno como w3schools https://learnpython.org/ apuntes python 3 con ejercicios Walter En w3schools hay html y css también, muy bue...