¿Qué es una recursividad de cola?

La recursividad de cola es un tipo de llamada de método de programación donde un método se llama a sí mismo, luego devuelve inmediatamente el valor de esa segunda llamada. En otras palabras, la recursividad de cola ocurre cuando la declaración final dentro de un método es otra llamada a ese mismo método. Los parámetros de la segunda llamada al método son generalmente diferentes de los de la primera, pero esto no es necesario. Para que esta recursividad 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 vacíos, 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. Una llamada de recursividad de cola adecuada también se puede encontrar 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 incorporada del lenguaje informático.

La recursividad de cola existe en muchos lenguajes informáticos, 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 recursividad es a menudo la forma más limpia y sencilla de realizar tareas repetitivas.

Un ejemplo común de recursividad 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 recursividad viene 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 recursividad de cola, con o sin una declaración de control alrededor de una llamada final al método.

La recursividad de cola es solo un ejemplo de los múltiples tipos de recursividad. 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 recursividad de cola es que el valor de una llamada recursiva se devuelve inmediatamente y no sucede nada más en el método de llamada después de esa llamada.