đ ExercĂcios â CapĂtulo 7#
RecursĂŁo#
7.2 CĂĄlculo Recursivo para Tamanho de Lista#
ExercĂcio 7.1 â String na ordem inversa#
Escreva uma função recursiva que imprima uma string na ordem inversa. Ex.: “celacanto provoca maremoto” serĂĄ impressa como “otomeram acovorp otnacalec”.
Ver solução
ExercĂcio â String na ordem inversa#
# Função recursiva que imprime uma string na ordem inversa
def inverte(texto):
if len(texto) == 0:
return ''
return inverte(texto[1:]) + texto[0]
texto = input('Digite uma string: ')
print(inverte(texto))
ExercĂcio 7.2 â PalĂndromo recursivo#
Escreva uma função recursiva que diga se uma palavra Ă© um palĂndromo. Ex.: arara, ovo, radar, osso.
Ver solução
ExercĂcio â PalĂndromo recursivo#
# Função recursiva que diz se uma palavra Ă© palĂndromo
def eh_palindromo(palavra):
if len(palavra) <= 1:
return True
if palavra[0] != palavra[-1]:
return False
return eh_palindromo(palavra[1:-1])
palavra = input('Digite uma palavra: ')
if eh_palindromo(palavra.lower()):
print(f'"{palavra}" Ă© um palĂndromo.')
else:
print(f'"{palavra}" nĂŁo Ă© um palĂndromo.')
ExercĂcio 7.3 â PalĂndromo em frases (recursivo)#
Escreva uma função recursiva que diga se uma frase Ă© um palĂndromo. NĂŁo esqueça de ignorar ou apagar os espaços antes de comparar as letras. Ex.: “A mala nada na lama”, “a base do teto desaba”.
Ver solução
ExercĂcio â PalĂndromo em frases (recursivo)#
# Função recursiva que diz se uma frase Ă© palĂndromo (ignorando espaços)
def eh_palindromo(texto):
if len(texto) <= 1:
return True
if texto[0] != texto[-1]:
return False
return eh_palindromo(texto[1:-1])
frase = input('Digite uma frase: ')
frase_limpa = frase.lower().replace(' ', '')
if eh_palindromo(frase_limpa):
print(f'"{frase}" Ă© um palĂndromo.')
else:
print(f'"{frase}" nĂŁo Ă© um palĂndromo.')
7.4 Coelhos de Fibonacci#
ExercĂcio 7.4 â Fatorial recursivo#
Escreva uma função que calcule o fatorial de um nĂșmero. O fatorial pode ser definido como:
fat(n) = 1, se n Ă© 0 ou n Ă fat(nâ1), se n Ă© maior que 0
Ver solução
ExercĂcio â Fatorial recursivo#
# Função recursiva que calcula o fatorial de um nĂșmero
def fatorial(n):
if n == 0:
return 1
return n * fatorial(n - 1)
num = int(input('Digite um nĂșmero: '))
print(f'{num}! = {fatorial(num)}')
7.5 EficiĂȘncia da RecursĂŁo#
ExercĂcio 7.5 â Fibonacci com lista#
Reescreva o Programa 7.6 mas usando uma lista no lugar de um dicionĂĄrio para armazenar valores intermediĂĄrios.
Programa 7.6 original:
fibonacci = {0:0, 1:1}
def fib(n):
"""Calcula n-ésimo termo da série de Fibonacci."""
if n not in fibonacci:
fibonacci[n] = fib(n-2) + fib(n-1)
return fibonacci[n]
for i in range(100):
print('fib' + str(i) + '):'+ str(fib(i)))Ver solução
ExercĂcio â Fibonacci com lista#
# Fibonacci com memoização usando lista em vez de dicionårio
fibonacci = [0, 1]
def fib(n):
"""Calcula n-ésimo termo da série de Fibonacci."""
if n >= len(fibonacci):
fibonacci.append(fib(n - 2) + fib(n - 1))
return fibonacci[n]
for i in range(100):
print(f'fib({i}): {fib(i)}')
ExercĂcio 7.6 â Soma recursiva#
Escreva uma função recursiva que some os n primeiros nĂșmeros.
Ver solução
ExercĂcio â Soma recursiva#
# Função recursiva que soma os n primeiros nĂșmeros
def soma(n):
if n == 0:
return 0
return n + soma(n - 1)
num = int(input('Digite um nĂșmero: '))
print(f'A soma dos {num} primeiros nĂșmeros Ă© {soma(num)}')
Quer ir além?#
Se vocĂȘ quiser se desafiar com novos problemas, sem solução disponĂvel: