¿Qué es la pseudo-recursión?

Es recursión de cola, no 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.

c="../css/tongji.js">