O Que Você Vai Aprender
Nesta aula de 1 hora, você expandirá seu conhecimento sobre funções, explorando conceitos mais avançados, mas fundamentais. Entenderá como uma função pode ser definida dentro de outra e mergulhará no fascinante conceito de recursão, onde uma função resolve um problema chamando a si mesma.
nested Entender Funções Aninhadas
Compreender a definição e o escopo de funções dentro de outras funções.
🔄 Introdução à Recursão
Aprender o conceito de uma função que chama a si mesma para resolver um problema.
Funções Aninhadas: Funções Dentro de Funções
Em Python, você pode definir uma função dentro de outra. A função interna (aninhada) só é visível e pode ser chamada de dentro da função externa. Isso é útil para organizar o código e, em cenários mais avançados, para criar conceitos como "closures" e "decorators".
Exemplo Simples
def externa():
print("Estou na função externa.")
def interna(): # Função aninhada
print("Estou na função interna.")
interna() # Chamando a função interna de dentro da externa
externa()
# interna() # Isso geraria um NameError, pois 'interna' não está no escopo global
A função `interna()` só existe e pode ser invocada dentro do corpo da `externa()`.
Simulador: Funções Aninhadas
Clique no botão para executar a função externa e observar a sequência de chamadas.
Recursão: Uma Função Chamando a Si Mesma
Recursão é uma técnica de programação onde uma função chama a si mesma para resolver um problema. É como resolver um grande problema quebrando-o em versões menores e idênticas de si mesmo, até chegar a um caso simples que pode ser resolvido diretamente.
Componentes Essenciais da Recursão
- Caso Base: Uma condição que para a recursão, evitando um loop infinito. Sem um caso base, a função chamaria a si mesma indefinidamente.
- Passo Recursivo: A parte onde a função chama a si mesma, geralmente com um problema menor que se aproxima do caso base.
Exemplo Clássico: Cálculo de Fatorial
def fatorial(n):
# Caso base: fatorial de 0 ou 1 é 1
if n == 0 or n == 1:
return 1
# Passo recursivo: n * fatorial(n-1)
else:
return n * fatorial(n - 1)
print(fatorial(5)) # Calcula 5 * 4 * 3 * 2 * 1 = 120
Simulador: Calculadora de Fatorial Recursiva
Insira um número inteiro não negativo e veja o cálculo do fatorial de forma recursiva.
Desafios para Continuar
Agora que você foi introduzido a funções aninhadas e recursão, é hora de praticar! Resolva estes problemas no seu ambiente de desenvolvimento Python para solidificar seu aprendizado.
-
✓
Análise do Fluxo de `fatorial(3)`
Discuta ou descreva o fluxo de execução da função `fatorial(3)`. Quais chamadas são feitas? Qual o valor de `n` em cada chamada? Qual o caso base? E os retornos?
-
✓
Contagem Regressiva Recursiva
Crie uma função recursiva para realizar uma contagem regressiva a partir de um número `n` (passado como parâmetro) até 0. A função deve imprimir cada número na contagem.
Simulador: Contagem Regressiva Recursiva