📘 Exercícios — Capítulo 7#

RecursĂŁo#

← Voltar


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:

👉 Exercícios extras do Capítulo 7