Funções Recursivas Parte 2
Parte da seção Logic & Flow do Journey de Python da Coddy — lição 61 de 78.
Funções recursivas normalmente têm duas partes:
- Caso Base: Define quando a recursão deve parar.
- Passo Recursivo: Chama a própria função com uma entrada menor.
Exemplo: Calculando fatorial usando recursão:
def factorial(n):
if n == 1: # Caso base
return 1
return n * factorial(n - 1) # Chamada recursiva
print(factorial(5)) # Saída: 120Aqui, a função continua chamando a si mesma com n - 1 até que alcance 1, onde a recursão para.
Exemplo: Invertendo uma String:
def recursive_reverse(s):
if len(s) <= 1: # Caso base: string vazia ou com um único caractere
return s
else:
return recursive_reverse(s[1:]) + s[0] # Passo recursivo
text = "hello"
result = recursive_reverse(text)
print(result)
# Saída: ollehNeste exemplo, a função recursive_reverse chama a si mesma com o restante da string (s[1:]) até que a string esteja vazia ou tenha apenas um caractere. Cada chamada anexa o primeiro caractere ao resultado da chamada recursiva, revertendo efetivamente a string.
Desafio
FácilEscreva uma função recursiva chamada fibonacci que recebe um número inteiro positivo n como argumento e retorna o enésimo número de Fibonacci. A sequência de Fibonacci é definida como:
fibonacci(1) = 0fibonacci(2) = 1fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)paran > 2.
Exemplo de Entrada:
n = 6Exemplo de Saída:
5Folha de consulta
Funções recursivas têm duas partes essenciais:
- Caso Base: Define quando a recursão deve parar
- Passo Recursivo: Chama a própria função com uma entrada menor
Exemplo de fatorial:
def factorial(n):
if n == 1: # Caso base
return 1
return n * factorial(n - 1) # Chamada recursiva
print(factorial(5)) # Saída: 120Exemplo de inversão de string:
def recursive_reverse(s):
if len(s) <= 1: # Caso base: string vazia ou com um único caractere
return s
else:
return recursive_reverse(s[1:]) + s[0] # Passo recursivo
text = "hello"
result = recursive_reverse(text)
print(result) # Saída: ollehExperimente você mesmo
def fibonacci(n):
# Escreva o código aquiEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Logic & Flow
1Exploração de Variáveis
ConstantesAtribuição de Múltiplas VariáveisTroca de VariáveisVariáveis de Espaço ReservadoArredondar NúmerosCasting de Listas4Aplicativo de Agenda de Contatos
Exibir MenuAdicionar Contato7Conjuntos Parte 2
Operações Matemáticas Parte 1Operações Matemáticas Parte 2Revisão - Caça ao TesouroSubconjuntos e SuperconjuntosIterando sobre ConjuntosRevisão - Rastreador de Torneio10List Comprehensions Básicas
A SintaxeCriando Listas SimplesAdicionando CondiçõesUsando Agregação de DadosRecapitulação - House Of ListsRecapitulação - Elements Of Freedom13Sistema de Gerenciamento de Inventário
Visão Geral do ProjetoAdicionar Item2Dicionários Parte 1
O que é um Dicionário?Criando um DicionárioAcessando ValoresModificando DicionáriosRecapitulação - Gerenciador de Receitas5Tomada de Decisão Avançada
Operador TernárioVerificações de PertencimentoVerificações de IdentidadeErros de IndentaçãoRecapitulação - Filtro de Férias8Gerenciador de Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno11Funções Avançadas
Retornando Múltiplos ValoresFunções Lambda Parte 1Funções Lambda Parte 2Desafio de Recapitulação - Lambda SortFunções Recursivas Parte 1Funções Recursivas Parte 2Recapitulação - Somar Listas Aninhadas14Funções de Ordem Superior
A Função MapA Função FilterRecapitulação - Validador de E-mailRecapitulação - Processador de Números3Dicionários Parte 2
Métodos de DicionárioDicionários AninhadosVerificando ChavesIterando em DicionáriosRecapitulação - Contador de Frequência6Conjuntos Parte 1
O que é um Conjunto?Operações BásicasMétodos de ConjuntosRecapitulação - Remover Duplicatas9Agregação de Dados Avançada
Usando SumEncontrando Mínimo e MáximoOrdenando Dados de Forma EficienteRecapitulação - Dictionary Sorter