¿Qué es la pseudo-recursión?
Recursión de cola - Recursión de cola
Un algoritmo utilizado en tecnología de programación de computadoras.
Tail Recursion es el nombre propio del algoritmo recursivo tradicional, que suele considerarse una lacra. Tiene mala reputación y parece siempre asociado con la ineficiencia.
La recursión de cola comienza al final del cálculo y cada recursión calcula el resultado correspondiente. Es decir, la llamada a la función aparece al final de la función que llama. no es necesario guardar ninguna variable local. Es mejor que la función llamada regrese más allá de la persona que llama a la persona que llama.
Aquí tienes un ejemplo:
Recursividad lineal:
long Rescuvie(long n) {
return(n == 1) ?1: n * Rescuvie(n - 1);
}
Recursión de cola:
long TailRescuvie(long n, long a) {
return(n == 1) ? a : TailRescuvie(n - 1, a * n);
}
long TailRescuvie(long n) { // usar En paquete
return(n == 0) ?1: TailRescuvie(n, 1
}
Cuando n = 5
<); p>Para la recursividad lineal, el proceso recursivo es el siguiente:Rescuvie(5)
{5 * Rescuvie(4)}
{5 * { 4 * Rescuvie(3)}}
{5 * {4 * {3 * Rescuvie(2)}}}
{5 * {4 * {3 * {2* Rescuvie(1)}}}}
{5 * {4 * {3 * {2 * 1}}}}
{5 * {4 * { 3 * 2}}}
{5 * {4 * {4 * {4 * 6}}}
20)
TailRescuvie(2, 60 )
TailRescuvie(1, 120)
120
No es difícil ver que la recursividad lineal ordinaria consume más recursos que la recursividad de cola, y en términos de implementación, cada llamada Cada vez que se repite un procedimiento almacenado, la cadena de llamadas se alarga
. El sistema debe utilizar la pila para retener y restaurar datos. La recursividad final
no tiene este problema porque su estado se guarda por completo mediante n y a.