Padrão 2: quebrar o número em dígitos
objetivo Com % 10 e / 10 você anda pelos dígitos igual anda por um vetor.
Duas contas resolvem tudo: num % 10 é o ÚLTIMO dígito, e num / 10 é o número SEM ele.
Então o caso recursivo é sempre: faço algo com num % 10 e chamo de novo com num / 10.
O caso base é num == 0, porque aí não sobrou dígito nenhum.
exemplo.cclique numa linha pra entender ela
Onde todo mundo escorrega
- Esse molde vale pra número positivo. Com negativo o % 10 devolve resto negativo.
- Não confunda: % 10 é o dígito, / 10 é o que sobra. Trocar os dois quebra tudo.
Desafio
Escreva contaDigito, que conta quantas vezes o dígito d aparece no número num. Exemplo: contaDigito(12321, 1) é 2.
int contaDigito(int num, int d)o que a função tem que devolver
| chamada | saída esperada |
|---|---|
| contaDigito(12321, 1) | 2 |
| contaDigito(5000, 0) | 3 |
| contaDigito(7, 7) | 1 |
| contaDigito(999, 9) | 3 |
a sua função
linha 1
int contaDigito(int num, int d) {
// caso base: num == 0
// compare o ultimo digito com d e siga para num / 10
}Ctrl+Enter (Cmd+Enter no Mac) roda. Esc sai do editor.
aperte Rodar pra ver a saída aqui
Ver a pilha de chamadas passo a passo
Mostra o que o seu código faz em cada chamada. É uma simulação didática, não substitui o botão de testar.
Dicas
Tenta sozinho primeiro. Travou de verdade, abre a primeira.