¿Qué es una recursión de cola?
La recursión de cola es un tipo de llamada a un método de programación donde un método se llama a sí mismo y luego devuelve inmediatamente el valor de esa segunda llamada. En otras palabras, la recursión de cola ocurre cuando la declaración final dentro de un método es otra llamada a ese mismo método. Los parámetros en la segunda llamada al método generalmente son diferentes de los de la primera, pero esto no es obligatorio. Para que esta recursión funcione, el método que se llama dentro de sí mismo debe devolver un valor concreto, como un número, una cadena o algún otro objeto. Los métodos nulos, que no devuelven un valor, no funcionan bien para la recursividad.
El requisito de que una llamada recursiva debe ser la última instrucción en su método de llamada no significa necesariamente que la llamada recursiva sea la última línea del método. También se puede encontrar una llamada de recursión de cola adecuada dentro de una estructura de control, lo que significa que, en el código fuente, la estructura de control puede finalizar el método en lugar de la llamada. La distinción importante en este caso es que una estructura de control no es una declaración de programación, sino una parte integrada del lenguaje de la computadora.
La recursividad de la cola existe en muchos lenguajes de computadora, incluidos Java y C ++. Con frecuencia, estas llamadas recursivas se pueden reescribir utilizando otros medios, como bucles for, bucles while o declaraciones goto. La utilidad de la recursividad se encuentra al crear muchas llamadas secuenciales al mismo método. La recursión es a menudo la forma más limpia y fácil de realizar tareas repetitivas.
Un ejemplo común de recursión de cola es un método que calcula el factorial de un número. Este proceso es ideal porque, comenzando en cualquier número, cada número antes de que se multiplique. Entonces, para encontrar el factorial de 5, el proceso adecuado para hacerlo sería multiplicar 5 * 4 * 3 * 2 * 1. La recursión se produce debido a cómo está estructurado el método factorial: si el factorial es 1, devuelve 1; de lo contrario, devuelve el factorial del número dado al método menos uno. Este método también es útil porque se puede escribir de manera equivalente utilizando cualquier tipo de recursión de cola, con o sin una declaración de control alrededor de una llamada al método final.
La recursividad de cola es solo un ejemplo de los múltiples tipos de recursión. El concepto en todos los tipos de recursividad es esencialmente el mismo, que de alguna manera un método se llama a sí mismo. De estos tipos, la distinción de la recursión de cola es que el valor de una llamada recursiva se devuelve inmediatamente, y nada más sucede en el método de llamada después de esa llamada.