Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Desafio de contagem somando-se ao último número.

Hoje ao comentar com um amigo que estava fazendo o curso, expliquei para ele que havia aprendido um pouco de javascrip e html. Ele então me passou um desafio que eu gostaria de resolver. Mas para isso, gostaria de saber como mudar uma variável dentro de um for. (Que é o que eu acredito ser o jeito certo de fazê-lo)

O desafio proposto, é: Contar de 1 a 100, fazendo com que o primeiro número some-se ao último postado. Exemplo: 1 2 3 5 8 13 21..

Então, a princípio, pensei em criar três variáveis.

var a = 1 var b = 2 var c = a + b

Até aí, a conta fecharia, já que var c seria 3. Mas aí que entra o meu problema. A var c, deveria então, criar uma variavel d, que seria var d= b+c, e assim por diante, até chegar a 100. Não é cabível eu criar tantas váriaveis para isso. A ideia era criar uma função for que fizesse isso para mim, caso possível.

E agora eu estou com isso na cabeça, sem ter ideia de como seguir com esse programa.

Conseguiriam me ajudar?

5 respostas

Boa noite.

João, no caso do uso do FOR você deve sempre incrementar as variáveis para a próxima contagem, segue um código de exemplo:

var passo;
for (passo = 0; passo < 5; passo++) {
  // Executa 5 vezes, com os valores de passos de 0 a 4.
  console.log('Ande um passo para o leste');
}

Onde a incrementação ocorre no "passo++".

Espero ter ajudado.

Olá Clayton. Bom dia! Quando a incrementação, eu compreendi. Eu gostaria de saber, como ficaria no caso do desafio proposto. Note que não seria uma incrementação sequencial, mas sim, uma incrementação de soma ao último número.

solução!

Oi João e Clayton ,tudo bem?

Esse desafio é clássico, se chama sequência de Fibonacci.

Dá uma olhada como ficaria em javascript fica melhor com while do que com for na minha opinião.

<script>
var num=100;
var a = 1;
var b = 0; 
var temp;

  while (num >= 0){
    temp = a;
    a = a + b;
    b = temp;
    num--;
    document.writeln(b);
  }



</script>

Como andré postou. A sequência é basicamente essa. Fiz hoje com esse amigo, acredito que de uma forma mais simples. Por isso vou postar aqui também.

<meta charset="UTF-8">
<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var a = 1
    var b = 2
    var c = 0

    var contador = 0;

    while(contador <= 20) {

        c = a + b;
        mostra(c);
        a = b;
        b = c;

        if (c >= 100 ) {
            break;
    } else {
        contador++; 
    }
}
    mostra("FIM");
</script>

A única questão, é que desse jeito, não estou conseguindo limitar a conta até 100 ou inferior. Ele simplesmente para no número 144. Realizando a última soma.

Você não estava conseguindo porque o mostra(c) estava antes do if que dá um break no while.

Faz assim oh:

<meta charset="UTF-8">
<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var a = 1
    var b = 2
    var c = 0

    var contador = 0;

    while (contador <= 20) {

        c = a + b;

        a = b;
        b = c;

        if (c >= 100) {
            break;
        } else {
            mostra(c);
            contador++;
        }
    }
    mostra("FIM");
</script>