Compartilhamento de tecnologia

Algoritmo Recursivo [Cálculo Fatorial]

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

algoritmo recursivoé uma técnica de programação amplamente utilizada em ciência da computação e matemática que permite funçõesdiretoouindiretoterrachamar a si mesmo para resolver o problema.recursivoIdeia básicaÉ a decomposição de problemas complexos em subproblemas menores e semelhantes até que esses subproblemas sejam simples o suficiente para serem resolvidos diretamente.

Algoritmos recursivos geralmente contêm duas partes principais:

  • Caso Base: Esta é a condição de encerramento para chamadas recursivas, ou seja, a instância de problema mais simples que pode ser respondida diretamente sem outras chamadas recursivas.
  • Caso Recursivo: Este é o processo de dividir um problema em subproblemas menores e resolver esses subproblemas por meio de chamadas recursivas. O caso recursivo deve garantir que cada chamada progrida em direção ao caso base.

Etapas do algoritmo recursivo:

  • Identifique casos básicos: determine quais problemas podem ser resolvidos diretamente, sem outras chamadas recursivas.
  • Projete situações de recursão: defina como dividir um problema grande em subproblemas menores e como combinar as soluções dos subproblemas para obter uma solução para o problema original.
  • Garantir a convergência recursiva: Garanta que as chamadas recursivas acabem alcançando o caso base e evitem a recursão infinita.

Vantagens e desvantagens dos algoritmos recursivos:

vantagem: O código é conciso, a lógica é clara e é fácil de entender e escrever.
deficiência : pode ser menos eficiente que a solução iterativa porque envolve mais sobrecarga de chamada de função. Além disso, a recursão muito profunda pode causar erros de estouro de pilha.

A recursão tem aplicações em muitos algoritmos, comotravessia de árvorePesquisa gráficaProgramação dinâmica, etc. . O uso adequado da recursão pode simplificar a resolução de problemas complexos.

Exemplo: Calcular fatorial

def factorial(n):#自定义求n的阶乘函数
        if n==1:#判断n=1
                return 1#返回1结束
        else:#递归条件 即n!=1
                return n*factorial(n-1)#递归求阶乘

number = int(input("请输入一个正整数:"))#输入n的值
result = factorial(number)#调用阶乘函数
print("%d 的阶乘是 %d" %(number,result))#输出结果
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Insira a descrição da imagem aqui

Explicação do código

factorial A função recebe um parâmetro n , representa o número para o qual o fatorial deve ser calculado.O fatorial é expresso comon!, definido como tudo menor ou igual a n O produto de inteiros positivos. Por exemplo,5! = 5 × 4 × 3 × 2 × 1 = 120

Dentro da função:

  • Caso base: se n Se for igual a 1, a função retorna 1 diretamente. Esta é a condição de término da recursão porque o fatorial de 1 é definido como 1.
  • Caso recursivo: se n não for igual a 1, a função serán efactorial(n-1) Os resultados são multiplicados.factorial(n-1) é verdadefactorial funçãoA chamada em si , mas o parâmetro é reduzido em 1.Esta chamada continuará atén chega a 1.

A chave para a recursão é que cada chamada recursiva se aproxima do caso base, eventualmente alcançando o caso base e começando a retornar valores. Neste exemplo, cada chamada recursiva diminui n em 1 até que n se torne 1.

Perceber:

A recursão pode encontrar problemas de desempenho ou erros de estouro de pilha ao lidar com valores grandes porque cada chamada de função ocupa uma parte do espaço da pilha. Para operações matemáticas simples, como fatoriais, geralmente existem métodos iterativos mais eficientes e de fácil memória. No entanto, a recursão fornece uma maneira elegante e fácil de entender para resolver determinados problemas.