Introducción a la recursividad
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 47 de 65.
La recursividad es una técnica de programación en la que una función se llama a sí misma para resolver un problema. Piense en ello como si mirara dos espejos enfrentados: cada reflejo contiene una versión más pequeña de la misma imagen, creando un bucle infinito hasta que los reflejos se vuelven demasiado pequeños para verse.
Cada función recursiva necesita dos componentes esenciales para funcionar correctamente. El caso base es la condición que detiene la recursividad; es como el punto en el que los reflejos del espejo se vuelven demasiado pequeños para importar. Sin un caso base, tu función se llamaría a sí misma indefinidamente, lo que acabaría provocando el cierre inesperado de tu programa.
El paso recursivo es donde la función se llama a sí misma con una versión modificada del problema original. Cada vez que la función se llama a sí misma, debe estar trabajando en una versión más pequeña o simple del problema, acercándose gradualmente hacia el caso base.
Imagina que estás buscando tus llaves en una pila de papeles. Podrías revisar el papel de arriba y, si tus llaves no están allí, harías lo mismo con la pila restante (que ahora es un papel más pequeña). Seguirías repitiendo este proceso hasta que encuentres tus llaves o no queden más papeles por revisar.
Este enfoque de dividir un problema grande en problemas más pequeños e idénticos es lo que hace que la recursividad sea tan poderosa para ciertos tipos de desafíos de programación.
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 dividiéndolo en problemas más pequeños e idénticos.
Cada función recursiva necesita dos componentes esenciales:
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 una versión modificada del problema original, acercándose gradualmente al caso base.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
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
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario7Funciones avanzadas
Funciones anónimasPasar funciones como argumentosEntendiendo los ClosuresIntroducción a la recursividadFunción recursiva: Cuenta regresivaFunción recursiva: FactorialResumen - Procesador de listas2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única