Funciones recursivas Parte 2
Parte de la sección Logic & Flow del Journey de Python de Coddy — lección 61 de 78.
Las funciones recursivas suelen tener dos partes:
- Caso base: Define cuándo debe detenerse la recursión.
- Paso recursivo: Llama a la función a sí misma con una entrada más pequeña.
Ejemplo: Calcular el factorial usando recursividad:
def factorial(n):
if n == 1: # Caso base
return 1
return n * factorial(n - 1) # Llamada recursiva
print(factorial(5)) # Salida: 120Aquí, la función se sigue llamando a sí misma con n - 1 hasta que llega a 1, donde la recursión se detiene.
Ejemplo: Invertir una cadena:
def recursive_reverse(s):
if len(s) <= 1: # Caso base: cadena vacía o de un solo carácter
return s
else:
return recursive_reverse(s[1:]) + s[0] # Paso recursivo
text = "hello"
result = recursive_reverse(text)
print(result)
# Salida: ollehEn este ejemplo, la función recursive_reverse se llama a sí misma con el resto de la cadena (s[1:]) hasta que la cadena esté vacía o tenga un solo carácter. Cada llamada añade el primer carácter al resultado de la llamada recursiva, invirtiendo efectivamente la cadena.
Desafío
FácilEscribe una función recursiva llamada fibonacci que tome un entero positivo n como argumento y devuelva el n-ésimo número de Fibonacci. La secuencia de Fibonacci se define como:
fibonacci(1) = 0fibonacci(2) = 1fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)paran > 2.
Ejemplo de entrada:
n = 6Ejemplo de salida:
5Hoja de referencia
Las funciones recursivas tienen dos partes esenciales:
- Caso base: Define cuándo debe detenerse la recursividad
- Paso recursivo: Llama a la función a sí misma con una entrada más pequeña
Ejemplo de factorial:
def factorial(n):
if n == 1: # Caso base
return 1
return n * factorial(n - 1) # Llamada recursiva
print(factorial(5)) # Salida: 120Ejemplo de inversión de cadena:
def recursive_reverse(s):
if len(s) <= 1: # Caso base: cadena vacía o de un solo carácter
return s
else:
return recursive_reverse(s[1:]) + s[0] # Paso recursivo
text = "hello"
result = recursive_reverse(text)
print(result) # Salida: ollehPruébalo tú mismo
def fibonacci(n):
# Escribe el código aquíEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Exploración de variables
ConstantesAsignación de múltiples variablesIntercambio de variablesVariables de marcador de posiciónRedondear númerosCasting de listas4Aplicación de Agenda de Contactos
Mostrar MenúAgregar Contacto7Conjuntos Parte 2
Operaciones matemáticas Parte 1Operaciones matemáticas Parte 2Resumen - Búsqueda del tesoroSubconjuntos y superconjuntosIterar sobre conjuntosResumen - Rastreador de torneos10Comprensión de listas básica
La sintaxisCreación de listas simplesAñadir condicionesUso de agregación de datosResumen - La casa de las listasResumen - Elementos de libertad13Sistema de Gestión de Inventarios
Descripción general del proyectoAgregar artículo2Diccionarios Parte 1
¿Qué es un diccionario?Crear un diccionarioAcceder a los valoresModificar diccionariosResumen - Gestor de recetas5Toma de decisiones avanzada
Operador ternarioComprobaciones de pertenenciaComprobaciones de identidadErrores de sangríaRepaso - Filtro de vacaciones8Gestor de registros de estudiantes
Descripción general del proyectoAñadir estudiante11Funciones avanzadas
Retornar múltiples valoresFunciones Lambda Parte 1Funciones Lambda Parte 2Desafío de repaso - Lambda SortFunciones recursivas Parte 1Funciones recursivas Parte 2Repaso - Sumar listas anidadas14Funciones de orden superior
La función MapLa función FilterRepaso - Validador de emailsRepaso - Procesador de números3Diccionarios Parte 2
Métodos de diccionariosDiccionarios anidadosVerificación de clavesIterar sobre diccionariosResumen - Contador de frecuencia6Conjuntos - Parte 1
¿Qué es un conjunto?Operaciones básicasMétodos de conjuntosResumen - Eliminar duplicados9Agregación de datos avanzada
Uso de SumBúsqueda de mínimo y máximoOrdenar datos de manera eficienteRepaso - Ordenador de diccionarios