Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

compliquei o trem

Eu compliquei um trem que era mo simples kkkk


let diasEconomizados = 100;
let dias = [];
let diaAnterior = 0;
let economia = 0;
for (let i = 0; i <= diasEconomizados; i++) {
    dias.push(i);
    if(dias[i] !== diasEconomizados){
        diaAnterior += dias[i];     
        economia = diaAnterior + dias[i] + 1 ;
        console.log(`Dia ${dias.length}: ${economia}`);     
    }    
}
// resposta do professor
let diaProf = 1;
let economiaProf = 0;
let totalDiasProf = 100;

do {
    economiaProf += diaProf
    diaProf++
} while (diaProf <= totalDiasProf);

console.log(`Total economizado: R$ ${economiaProf}`);

// depois de pesquisar como simplificar vi que tinha uma regra matematica para resolver sem loop

let diaGauss = 10
let totalEconomizadoGauss = (diaGauss*(diaGauss+1))/2;

console.log(`Em ${diaGauss} dias você economizou ${totalEconomizadoGauss} reais.`);
1 resposta

Oi, Tairone! Tudo bem?

Acontece com todo mundo complicar um trem que era simples, e o mais legal é que você chegou em três caminhos diferentes para o mesmo problema.

Comparando as suas versões, o ponto que vale observar é a primeira: guardar os dias em um array e ainda manter diaAnterior e economia em paralelo cria duas fontes de verdade, e a linha economia = diaAnterior + dias[i] + 1 acaba somando o dia atual duas vezes. A dica é enxugar para um único acumulador: dentro do for, faça apenas economia += i e imprima.

O array dias só seria necessário se você precisasse consultar os valores depois, o que não é o caso quando o objetivo é somar. Sobre a fórmula que você encontrou, ela é a soma de uma progressão aritmética (a famosa fórmula de Gauss) e roda em tempo constante, enquanto o laço precisa de N iterações. Vale ter os dois no repertório: o laço deixa o raciocínio explícito e serve para qualquer regra de acumulação, enquanto a fórmula fechada resolve na hora quando o padrão é conhecido.

Já que você gostou de otimizar, que outro exercício com laço você acha que poderia ser resolvido por uma fórmula direta?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!