Fundamentos de la recursividad

alok:

He leído acerca de la recursividad y estoy muy interesado en la comprensión de una cosa muy básica que estoy usando en el factorial. Desde que he investigado sobre ello así, vio videos en particular de la misma, pero de alguna manera esto me confunde mucho. Tengo la opción de escribir la taza de un código y mover hacia delante, pero estoy en el aprendizaje de cosas así.

A partir de aquí son las fuentes para la recursividad:

Tengo una cosa que pedir, ya que en el código que he visto una cosa que es el if-else. Sé sobre si el estado lo demás muy bien. Pero aquí las cosas son un poco más complicado.

public static int fact(int n){
  if(n <=1)
     return 1;
  else 
     return n * fact(n-1);
}

En el código anterior, aquí el resultado parece ser correcto pero de alguna manera lo que creo que es por eso que no está regresando a sólo 1 cuando satisface la condición, y cómo es que se está imprimiendo el resultado correcto. Hay una sola captura que no estoy sido capaz de captar. Por favor, ayúdame a salir de esto.

considerarme como un aprendiz en el campo de la codificación. Gracias

Divanshu:

Visualización de una función recursiva como un árbol hace que sea mucho más fácil de entender para los principiantes. Cada función recursiva funciona en dos pasos:

Paso 1 : expansión Árbol

Paso 2 : sustitución Volver

Considere la imagen de abajo. En la imagen, el color rojo muestra el paso 1 y de color verde muestra el paso 2. No se puede hacer el paso 2 hasta el paso 1 termina. Esta es la razón, es necesario tener una condición de terminación en cada función recursiva de otro modo; el árbol se mantendrá en la expansión de su programa se quedará sin memoria.

Árbol que muestra un cálculo del factorial de 4

Cuando se invocó fact(4), se expandió como 4 * fact(3)que se expandió aún más, como se muestra a continuación:

fact(4) = 4 * fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1

Ahora, todo lo que tiene que hacer es volver-sustituir los valores con el fin de obtener el valor de fact(4).

En el hardware, la función recursiva se expande al igual que el árbol se muestra arriba. Esto ocurre en la pila y cada nodo del árbol es un registro de activación. Ver esta respuesta para saber más acerca de registro de activación .

Supongo que te gusta

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