¿Cómo 1 2 3 vienen al final?

Vikki Nayyar:

En este programa, si el usuario introduce el número 3, el O / P será 3 2 1 1 2 3, entendí como 3 2 1 vino, pero no entiendo como 1 2 3 llegaron al final.

class GFG{ 
static void printFun(int test) 
{ 
    if (test < 1) 
        return; 
    else
    { 
        System.out.printf("%d ",test); 
        printFun(test-1); // statement 2 
        System.out.printf("%d ",test); 
        return; 
    } 
} 

public static void main(String[] args) 
{ 
    int test = 3; 
    printFun(test); 
} 
}
barredora:

Una forma de rastrear a través de funciones recursivas es mediante la expansión de cada llamada recursiva, como una expresión matemática.

Primero empezamos con

printFun(3)

Que se expande a:

print(3) // I have shortened System.out.printf here to just "print" to remove the noise
printFun(2)
print(3)

Todavía tenemos una llamada recursiva ( printFun(2)), por lo que vamos a ampliar.

print(3)
print(2)
printFun(1)
print(2)
print(3)

Continuar con la expansión:

print(3)
print(2)
print(1)
printFun(0)
print(1)
print(2)
print(3)

Y una última vez (ya que printFun(0)no hace nada, simplemente eliminarlo):

print(3)
print(2)
print(1)
print(1)
print(2)
print(3)

¡Oh mira! Eso producirá la salida 3 2 1 1 2 3!

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=227340&siteId=1
Recomendado
Clasificación