Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como contar o número de vogais em uma string de forma recursiva?

0 votos
17 visitas
perguntada Ago 30 em Programação Computacional por Fabio Fujita (36 pontos)  

Exercício 4.12 do Livro ”Introduction to Recursive Programming“ de Manuel Rubio-Sánchez, Capítulo 4 , página 131.

Compartilhe

1 Resposta

0 votos
respondida Ago 31 por Fabio Fujita (36 pontos)  

Uma das formas de contarmos o número de vogais em uma string qualquer é utilizando uma função recursiva. Nesse exercício, apresentaremos uma implementação em Python.

Começamos criando a função “identificaVogais”, que retorna 1 se determinado caractere é uma vogal (maiúscula ou minúscula) ou 0 caso não seja. Para isso, criamos a string “vogais” com todas as vogais maiúsculas e minúsculas. Uma alternativa seria normalizar a string que será analisada para que a mesma fique com todas as letras maiúsculas ou minúsculas, mas optamos por essa outra implementação.

A contagem recursiva de vogais é realizada pela função “contaVogais”. Caso a string que será analisada tenha apenas um caractere, a função simplesmente verifica se o mesmo é uma vogal. Caso a string tenha mais de um caratere, aplica-se a recursão chamando a função “identificaVogais” e “contaVogais”.

Considerando um exemplo de análise de uma string de três caracteres, a recursão se dá seguinte forma:

  1. Quando a função contaVogais é chamada, obtém-se:
    contaVogais(string, 2) + identificaVogais(string[2])
  2. Na primeira recursão, obtém-se:
    contaVogais(string,1)+ identificaVogais(string[1])+ identificaVogais(string[2])
  3. Por fim, na segunda recursão, é obtido o resultado:
    identificaVogais(string[0])+ identificaVogais(string[1])+ identificaVogais(string[2])

Ao rodar o programa, solicitamos que o usuário digite a string que será analisada no console usando a função “input”, e exibimos o resultado de quantas vogais a string possui utilizando a função “print”.

O código completo é apresentado a seguir:

def identificaVogais(caractere):
    vogais = "aeiouAEIOU" # string com vogais - case sensitive
    if caractere in vogais : 
        return 1
    else:
        return 0

def contaVogais(string, n):
    if n == 1 :
        return identificaVogais(string[0]) 
    else:
        #Recursão
        return contaVogais(string, n - 1) + identificaVogais(string[n - 1]) 


if __name__ == '__main__': 
    string = input("Digite a string:")
    print('O número de vogais na string digitada é: %s' \
          %(contaVogais(string, len(string))))
...