Exercícios Resolvidos de Recursão

Ver Teoria

Enunciado

Escreva uma função recursiva que receba um número inteiro (n) como parâmetro e retorne o número de vezes que os algarismos 3 e 4 aparecem em n. Exemplo: se n for 239424, a função retornará 3.

Passo 1

Fala, chefe! Aqui a gente precisa contar quantas vezes os números 3 e 4 aparecem em um número inteiro de forma recursiva.

Relaxa! Primeiramente, vamos montar nossa função. Pra contar, a gente só precisa de um dado externo, certo? Que é o número que a gente quer contar os 3 e 4. Então só teremos esse parâmetro, e vamos chamar de n, arbitrariamente.

Ok, qual é o caso mais fácil da gente saber se tem 3 ou 4? Bom, se o número for igual a 0 a gente sabe que não tem nenhum 3 e nenhum 4 nele, certo?!

Mas quando não é zero, a gente precisa diminuir a ordem do problema, e pra isso a gente precisa pensar um pouco sobre o que é diminuir a ordem do problema...

Passo 2

Se liga nesse número grandão aqui:

Mano, tu consegue perceber que a quantidade de 3 e 4 desse número grandão é a mesma coisa que a soma das quantidades de 3 e 4 se a gente dividir ele? Vamos chamar a quantidade de 3 e 4 de q34 pra economizar espaço na ilustração, ok? Olha só:

A gente separou o 5, e eu te digo que a quantidade de 3 e 4 do número de antes é a mesma que a soma da quantidade de 3 e 4 desses dois números que a gente separou agora. Basicamente, se o último dígito for 3 ou 4, a gente diz que a quantidade de 3 e 4 é 1 + quantidade de 3 e 4 sem o último dígito, sacou? Olha o código.

A gente pega o último dígito e checa se ele é 3 ou 4. Se for, a quantidade de 3 e 4 do número inicial é 1 + a quantidade de 3 e 4 que ainda restam, sacou?? Aí o ciclo se repete recursivamente. E caso o último não seja 3 e nem 4, então a quantidade de 3 e 4 é a mesma sem aquele número!

Já que 0 + conta_3_4 é a mesma coisa que não somar nada, a gente não precisa colocar! Mas essa é a resposta, ok? Apesar de ter várias outras respostas possíveis, essa é uma das soluções. O importante é entender a ideia, ok?! Agora, bora testar!

Passo 3

Pra testar, vou chamar a função dentro de um print() embaixo e ver se o resultado bate.

Olha, nesse código a gente espera que o resultado seja 3. Vamos executar!

E o resultado foi exatamente como esperávamos! MUAHAHHAA! Te espero no próximo, doido!

Resposta