Algoritmo recursivo de Python y una comprensión preliminar del concepto de pila

La última vez aprendimos el algoritmo de clasificación de selección. Al aprender, tenemos una comprensión preliminar del algoritmo en Python, aprendamos un algoritmo muy común e importante en Python-recursión, que también pasamos antes La secuencia de Fibonacci para comprender brevemente la recursividad
revise la secuencia de Fibonacci de la función recursiva

Pero tenemos que entender que la recursividad solo nos permite resolver el problema con mayor claridad, ¡pero no tiene ninguna ventaja de rendimiento!

Algoritmo recursivo

O en caso de que introducir: Tenemos un montón de cajas, podríamos abrir un cuadro que tenemos que encontrar la clave, pero puede ser otra caja en una caja, queremos encontrar la clave, hay varias formas de resolverlo?
Método a : use un bucle while
para crear una pila de cajas, busque una caja de la caja, la caja es una caja si la caja se agregará a la caja del montón, si se encuentra la clave, el final de salida del
segundo método : usando ideas recursivas para resolver
Crea una pila de cajas, todas las cajas son equivalentes a la primera parte de la caja, abre todas las cajas y mira, si encuentras la llave, la salida termina, si no encuentras la llave, la caja abierta equivale a la segunda parte de la caja, vuelve al primer paso El mismo método e idea para marcar la casilla en la segunda parte, y así sucesivamente, hasta encontrar la salida clave.

Aquí todavía tenemos que entender un concepto: condiciones de línea base y condiciones recursivas.

Condiciones de referencia y condiciones recursivas

Cuando se utiliza la recursividad, para evitar la situación de bucles infinitos, cada recursión se compone de dos partes: un caso base y un caso recursivo. La condición recursiva es que la función se llama a sí misma y la condición de línea base es Para evitar formar un bucle infinito,
escribí un número recíproco simple para comprender:

def num_daoshu(num):  # 这个参数是从几开始倒数
    print(num)      # 输出这个数字
    if num <= 0:        # 基线条件
        return
    else:       # 递归条件
        return num_daoshu(num - 1)

print(num_daoshu(5))

Apilar

La pila es una estructura de datos simple. La pila almacena los datos en una forma de primero en entrar, último en salir o de último en entrar, primero en salir. La inserción y eliminación de datos en la pila se realiza
en la parte superior de la pila. La pila se llama en una función recursiva: la clave
todavía se encuentra en la pila de cajas. Por ejemplo, tenemos dos cajas A y B, abrimos A y encontramos la caja C, abrimos C, encontramos que C está vacía, entonces volvemos a abrir la caja B ... sabiendo que se encuentra la clave. La
pila de llamadas recursivas es similar a esta
Inserte la descripción de la imagen aquí

Desventajas de la pila:

Usar la pila es conveniente, pero puede ocupar información similar almacenada en una gran cantidad de memoria, cada llamada de función ocupará algo de memoria, por lo que apilaremos mucho, la computadora almacena mucha información sobre la llamada de función,
esta situación Tenemos dos soluciones:
1. Recodificar y usar bucles en su lugar
2. Usar bucles de cola (este es un tema de recursividad avanzado que se ignora temporalmente), y no todos los idiomas admiten bucles de cola

Supongo que te gusta

Origin blog.csdn.net/Layfolk_XK/article/details/108284502
Recomendado
Clasificación