Luz de luna brillante frente a la cama, rasgando la recursividad con una mano.

contenido

1. El concepto de recursividad del método:

Pasando proceso: La función sigue usando su propio proceso.

Proceso de devolución: el proceso en el que una función sigue regresando.

2. ¿En qué escenarios se puede usar la recursividad?

3. (Productos secos) Cualquier código recursivo de escritura

Escribir código recursivo = condición de terminación + resolver el problema actual sin ningún método + entregar los problemas restantes al método actual;

Ejemplo:

Diagrama del proceso de llamada:

código de ejemplo


1. El concepto de recursividad del método:

Llamándose a sí mismo dentro del método, hay procedimientos para pasar y regresar.

Pasando proceso: La función sigue usando su propio proceso.

Proceso de devolución: el proceso en el que una función sigue regresando.

2. ¿En qué escenarios se puede usar la recursividad?

1. Un gran problema se puede dividir en soluciones de varios subproblemas idénticos

2. Las funciones divididas tienen las mismas ideas para resolver problemas excepto por las diferentes escalas de datos

3. Hay una condición de terminación recursiva

3. (Productos secos) Cualquier código recursivo de escritura

En el proceso de escritura de la recursividad, no debe preocuparse por cómo implementar el método dentro del método, sino centrarse en la semántica (función del método), suponiendo que el método se ha escrito y usarlo directamente.

Escribir código recursivo = condición de terminación + resolver el problema actual sin ningún método + entregar los problemas restantes al método actual;

Ejemplo:

Encuentre el factorial de n:

Diagrama del proceso de llamada:

código de ejemplo

/**
     * 功能:传入任意n我就能求出他的阶乘值
     *
     * @param n
     * @return
     */
    public static int 单手撕递归(int n){
        //1.递归终止条件
        if (n == 1){
            return n;
        }
        //2.不需要借助任何方法,就可以解除当前问题,当前问题就是求n自身
        //3.剩下的(n-1)的阶乘问题,交给  单手撕递归(int n)  这个方法

        //我当前只知道n的值,剩下的值n-1我不知道,交给别人去处理
        //调用单手撕递归,能帮我求出n-1的阶乘值
        //最后我只需要拼接答案即可
        return n * 单手撕递归(n-1);
    }

 

Supongo que te gusta

Origin blog.csdn.net/qq_52655865/article/details/124083614
Recomendado
Clasificación