Cómo utilizar la recursividad en el código javascript

Usted puede llamar a funciones desde fuera de la función o desde dentro de otras funciones con javascript. Usted puede incluso llamar a una función desde dentro de sí mismo. Cuando una función llama a sí mismo, se trata de utilizar una técnica de programación llamado recursión.

Puede utilizar la recursividad en muchos de los mismos casos en que usaría un bucle, excepto que repite las declaraciones dentro de una función.

Aquí es una función recursiva simple. Esta función recursiva tiene un gran problema, sin embargo. ¿Puedes ver eso?

squareItUp función (startingNumber) {var cuadrado = startingNumber * startingNumber-console.log (cuadrado) -squareItUp (plaza) -}

¿Ve usted el problema con esta función? Nunca termina. Simplemente seguirá multiplicando números juntos hasta que la detenga.

La ejecución de esta función probablemente se colgará su navegador, si no el equipo. No hay daño permanente se llevará a cabo, por supuesto, pero es suficiente para que usted acaba de leer el código y observe el problema aquí.

En este ejemplo se mejora la squareItUp () función, proporcionando lo que se llama un caso base. Un caso base es la condición bajo la cual el trabajo de una función recursiva que se hace y se debe detener. Cada función recursiva debe tener un caso base.

funcionar squareItUp (startingNumber) {cuadrado = startingNumber * startingNumber-si (plaza> 1000000) {console.log (plaza) -} else {squareItUp (plaza) -}}

Ya está. ¡Eso es mejor! Pero, esta función todavía tiene un gran problema. ¿Qué pasa si alguien pasa un número negativo, cero o 1 en ella? El resultado de cualquiera de estos casos aún sería un bucle infinito. Para protegerse contra esta situación, usted necesita una condición de terminación. En el código de abajo, una comprobación para asegurarse de que el argumento no es menor o igual a 1 y que no es otra cosa que un número se ha agregado. En ambos casos, la función se detendrá inmediatamente.

squareItUp función (startingNumber) {// condiciones de terminación, inputif válido ((typeof startingNumber! = "número") || (startingNumber lt; = 1)) {return - 1- // salir de la función} cuadrado = staringNumber * startingNumber - // conditionif Base (Plaza> 1000000) {console.log (plaza) - // Imprimir el valor final} else {/ / Si no se cumple la condición de base, hacerlo again.squareItUp (plaza) -}}



» » » » Cómo utilizar la recursividad en el código javascript