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
!