Hoje fiz um teste numa empresa, e um dos exercícios pedia pra criar um algoritmo que pegava um número inteiro e somava todos os dígitos, utilizando recursividade.
Foi novidade pra mim, então comecei a fazer continhas de dividir, e percebi que dividindo o número por 10, e seus quocientes sequentes também por 10, eu chegava no último quociente que era 0 (flutuante).
Os restos deixados pelas divisões eram os dígitos do número, aí só foi somá-los um a um.
public static int sumInt(int num, int sum) {
if (num < 1) return sum;
sum += num % 10;
return sumInt(num / 10, sum);
}
Na hora da prova, fiz um teste de mesa com esse código e deu erro. Mas chegando em casa executei e vi que deu certo.
Ex: 1234 => soma dá 10 (1+2+3+4).
O exercício não permitia manipular para String. Bom, confesso que em primeira instância eu faria com manipulação convertendo em String. Porco…rs…
Contudo achei interessante me fez pensar melhor e resolver um problema utilizando uma forma bacana. Alguém consegue resolver este problema de outras formas? Seria interessante compartilhar mais pra aprendizado.
Abraço!