Oi, Tairone. Tudo bem com você?
Legal você ter compartilhado as quatro tentativas, principalmente porque dá para perceber a evolução enquanto você foi testando diferentes estruturas de repetição. Na primeira tentativa, existe uma diferença importante em relação à saída esperada: o 10 não é exibido, porque o decremento acontece antes do console.log(). Como você percebeu depois, esse é justamente um ponto importante para observar quando a ordem das operações dentro do laço influencia o resultado.
Na segunda tentativa, a lógica do while também começa decrementando a variável por causa do --contagemRegreciva1 na própria condição. Já na terceira tentativa, o do...while não funciona dessa forma porque o bloco do termina antes do while; aquele segundo bloco entre { } não pertence ao laço. Nesse caso, a quarta tentativa ficou mais próxima da saída solicitada, pois primeiro exibe o valor atual e só depois decrementa a variável.
Uma dica para continuar praticando é observar sempre se a variável é decrementada antes ou depois da impressão. Como você testou while e do...while, qual dessas estruturas você acha que representa melhor uma situação em que a primeira execução precisa acontecer obrigatoriamente antes da verificação da condição?
Parabéns pela exploração das diferentes possibilidades, Tairone. Testar abordagens e identificar os próprios erros faz parte do aprendizado. Continue compartilhando seus exercícios por aqui, o fórum está à disposição.
Para saber mais:
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!