Algoritmo Python-algoritmo recursivo e uma compreensão preliminar do conceito de pilha

Aprendemos o algoritmo de ordenação por seleção da última vez. Ao aprender, temos uma compreensão preliminar do algoritmo em python, vamos aprender um algoritmo muito comumente usado e importante em recursão python, que também passamos antes A sequência de Fibonacci para entender brevemente a recursão,
revise a sequência de Fibonacci da função recursiva

Mas temos que entender que a recursão apenas nos permite resolver o problema de forma mais clara, mas não tem nenhuma vantagem de desempenho!

Algoritmo recursivo

Ou no caso de apresentarmos: Temos um monte de caixas, poderíamos abrir uma caixa que precisamos encontrar a chave, mas pode ser outra caixa em uma caixa, queremos encontrar a chave, existem várias maneiras de resolver isso?
Método a : use um loop while
para criar uma pilha de caixa, encontre uma caixa da caixa, a caixa é uma caixa se a caixa for adicionada à caixa de pilha, se a chave for encontrada, a saída final do
segundo método : usando ideias recursivas para resolver
Crie uma pilha de caixas, todas as caixas são equivalentes à primeira parte da caixa, abra todas as caixas para visualizar, se a chave for encontrada, a saída termina, se a chave não for encontrada, a caixa aberta é equivalente à segunda parte da caixa, volte ao primeiro passo O mesmo método e ideia para marcar a caixa na segunda parte, e assim por diante, até que a saída principal seja encontrada.

Aqui ainda temos que entender um conceito de condições básicas e condições recursivas

Condições de linha de base e condições recursivas

Ao usar a recursão, a fim de evitar a situação de loops infinitos, cada recursão é composta por duas partes: um caso base e um caso recursivo. A condição recursiva é que a função chama a si mesma, e a condição básica é Para evitar a formação de um loop infinito,
escrevi um número recíproco simples para compreensão:

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

print(num_daoshu(5))

Pilha

A pilha é uma estrutura de dados simples. A pilha armazena os dados na forma de primeiro a entrar, primeiro a entrar, primeiro a sair. A inserção e a exclusão de dados na pilha são realizadas
no topo da pilha. A pilha é chamada em uma função recursiva: a chave
ainda é encontrada na pilha de caixas. Por exemplo, temos duas caixas A e B, abrimos A e encontramos a caixa C, abrimos C, descobrimos que C está vazio, então voltamos para abrir a caixa B ... sabendo que a chave foi encontrada. A
pilha de chamadas recursivas é semelhante a esta
Insira a descrição da imagem aqui

Desvantagens da pilha:

Usar a pilha é conveniente, mas pode ocupar informações semelhantes armazenadas em muita memória, cada chamada de função vai ocupar um pouco de memória, então vamos empilhar alto, o computador armazena muita informação sobre a chamada de função,
essa situação Temos duas soluções:
1. Recodifique e use loops ao invés
2. Use laços finais (este é um tópico de recursão avançado temporariamente ignorado), e nem todas as linguagens suportam loops finais

Acho que você gosta

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