Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Partilha de solução alternativa

Partilho em baixo solução alternativa. Penso que é mais fácil a leitura, dado que não utiliza a recursividade:

function cpfValido(cpf) {
    let soma1 = 0;
    for(let i = 0; i < cpf.length - 2; i++) {
        soma1 += (10 - i) * cpf[i]; 
    }

    let soma2 = 0;
    for(let i = 0; i < cpf.length - 1; i++) {
        soma2 += (11 - i) * cpf[i]; 
    }

    const digVerificadorCalculado1 = 11 - (soma1 % 11);
    const digVerificadorCalculado2 = 11 - (soma2 % 11);
    const digVerificadorCPF1 = cpf.slice(9,10);
    const digVerificadorCPF2 = cpf.slice(10,11);


    return digVerificadorCalculado1 == digVerificadorCPF1 && digVerificadorCalculado2 == digVerificadorCPF2;
}

Cumprimentos

1 resposta
solução!

Olá, André, tudo bom?

Obrigado por compartilhar sua solução com a gente! Soluções alternativas agregam muito ao nosso aprendizado, fornecendo uma nova maneira de pensar sobre o problema!

Gostei muito do seu código e admito que também achei mais legível e fácil de entender! A solução com recursividade realmente pode ser um pouco mais confusa.

Mais uma vez parabéns e continue assim! Qualquer dúvida estaremos aqui para responder. Bons estudos! :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software