Funciones recursivas
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 8 de 68.
La recursividad es una técnica de programación en la que una función se llama a sí misma para resolver un problema. Esto crea un comportamiento similar a un bucle, pero en lugar de utilizar bucles tradicionales, la función se invoca repetidamente a sí misma con parámetros modificados hasta que alcanza una solución.
Cada función recursiva debe tener dos componentes esenciales para funcionar correctamente:
Caso Base: Esta es la condición que detiene la recursión. Sin ella, la función se llamaría a sí misma infinitamente, provocando que tu programa falle. El caso base define cuándo la función debe devolver un resultado en lugar de llamarse a sí misma de nuevo.
Paso recursivo: Aquí es donde la función se llama a sí misma con una versión modificada del problema original, moviéndose gradualmente hacia el caso base.
Aquí tienes un ejemplo sencillo de una función recursiva que calcula un factorial:
<?php
function factorial($n) {
// Caso base: el factorial de 1 es 1
if ($n <= 1) {
return 1;
}
// Paso recursivo: n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Salida: 120
?>En este ejemplo, factorial(5) llama a factorial(4), que llama a factorial(3), y así sucesivamente, hasta que llega a factorial(1) (el caso base). Luego, los resultados se multiplican de vuelta: 1 × 2 × 3 × 4 × 5 = 120.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilCrea una función recursiva llamada sumDigits que reciba un número entero positivo y devuelva la suma de sus dígitos. La función debe utilizar la recursividad para descomponer el número dígito por dígito.
Recibirás una entrada: un número entero positivo. Lee la entrada, llama a tu función recursiva con ese número e imprime la suma de sus dígitos.
Formato de entrada: Una línea que contiene un número entero positivo
Salida esperada: La suma de todos los dígitos del número
Hoja de referencia
La recursividad es una técnica de programación en la que una función se llama a sí misma para resolver un problema. Toda función recursiva necesita dos componentes:
Caso base: La condición que detiene la recursividad para evitar bucles infinitos.
Paso recursivo: Donde la función se llama a sí misma con parámetros modificados, avanzando hacia el caso base.
Ejemplo de una función factorial recursiva:
<?php
function factorial($n) {
// Caso base: el factorial de 1 es 1
if ($n <= 1) {
return 1;
}
// Paso recursivo: n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Salida: 120
?>Pruébalo tú mismo
<?php
// Leer la entrada
$number = intval(fgets(STDIN));
// TODO: Crea tu función recursiva sumDigits aquí
// Llama a la función y muestra el resultado
echo sumDigits($number);
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación