Menu
Coddy logo textTech

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:

  1. Caso base: Define cuándo debe detenerse la recursión.
  2. 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: 120

Aquí, 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: olleh

En 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.

challenge icon

Desafío

Fácil

Escribe 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) = 0
  • fibonacci(2) = 1
  • fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) para n > 2.

Ejemplo de entrada:

n = 6

Ejemplo de salida:

5

Hoja de referencia

Las funciones recursivas tienen dos partes esenciales:

  1. Caso base: Define cuándo debe detenerse la recursividad
  2. 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: 120

Ejemplo 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: olleh

Pruébalo tú mismo

def fibonacci(n):
    # Escribe el código aquí
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow