Función recursiva de JavaScript
Resumen: en este tutorial, aprenderá a usar la técnica de recursión para desarrollar una función recursiva de JavaScript, que es una función que se llama a sí misma.
Introducción a las funciones recursivas de JavaScript
Una función recursiva es una función que se llama a sí misma hasta que no lo hace.
Supongamos que tiene una función llamada recurse()
. La recurse()
es una función recursiva si se llama a sí misma dentro de su cuerpo, de la siguiente manera:
Code language: JavaScript (javascript)function recurse() { // ... recurse(); // ...}
Una función recursiva siempre tiene una condición para dejar de llamarse a sí misma, de lo contrario, se llamará a sí misma indefinidamente. Por lo tanto, una función recursiva suele tener el siguiente aspecto:
Code language: JavaScript (javascript)function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
Generalmente, las funciones recursivas se utilizan para descomponer un problema grande en otros más pequeños. Puede encontrar que se utilizan mucho en las estructuras de datos, como árboles binarios y gráficos y algoritmos, como búsqueda binaria y quicksort.
JavaScript función recursiva ejemplos
veamos algunos ejemplos de uso de las funciones recursivas.
1) Un ejemplo simple de función recursiva de JavaScript
Supongamos que necesita desarrollar una función que cuenta regresiva de un número especificado a 1. Por ejemplo, para contar de 10 a 1:
321
El siguiente ejemplo muestra el countDown()
función:
Code language: JavaScript (javascript)function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Este countDown(3)
muestra sólo el número 3.
Para hacer una cuenta regresiva del número 3 al 1, puede:
- mostrar el número 3.
- y llame al
countDown(2)
que muestra el número 2. - y llame al
countDown(1)
que muestra el número 1.
Lo siguiente cambia el countDown()
a una función recursiva:
Este countDown(3)
se ejecutará hasta que se supere el tamaño de la pila de llamadas, de la siguiente manera:
Code language: JavaScript (javascript)Uncaught RangeError: Maximum call stack size exceeded.
because condición para dejar de llamarse a sí mismo.
La cuenta atrás se detendrá cuando el siguiente número sea cero, por lo tanto, agregamos una condición if de la siguiente manera:
Salida:
321
El countDown()
parece funcionar como se espera.
Sin embargo, como se menciona en el tutorial Tipo de función, el nombre de la función es una referencia al objeto de función real.
Si en algún lugar del código, el nombre de la función se establece en null, la función recursiva dejará de funcionar.
Por ejemplo, el código siguiente, se producirá un error:
Code language: JavaScript (javascript)let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Error:
Code language: JavaScript (javascript)Uncaught TypeError: countDown is not a function
Como el script funciona:
- Primero, asigne el nombre de la función
countDown
a la variablenewYearCountDown
. - En segundo lugar, establezca la referencia de función
countDown
anull
. - En tercer lugar, llame a la función
newYearCountDown
.
El código causa un error porque el cuerpo de la función countDown()
hace referencia al nombre de la función countDown
que se estableció en null
en el momento de llamar a la función.
Para solucionarlo, puede usar una expresión de función con nombre de la siguiente manera:
2) Calcular la suma de dígitos de un número ejemplo
Dado un número, por ejemplo, 324, calcular la suma de dígitos 3 + 2 + 4 = 9.
Para aplicar la técnica recursiva, puede utilizar los siguientes pasos:
f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)
Así
f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3
el siguiente ejemplo muestra El sumOfDigits()
función recursiva:
Cómo funciona:
Resumen
- Una función recursiva es una función que se llama a sí misma hasta que no
- Una función recursiva siempre tiene una condición que se detiene la función de llamar a sí mismo.
- Fue este tutorial útil ?
- YesNo