Loops em Geradores em JavaScript

Dentro de geradores, é possível utilizar loops. Ao mesmo tempo, podemos pausar loops usando yield. Vamos ver um exemplo. Vamos pausar o loop a cada iteração:

javascriptfunction *func() {
  for (let i = 1; i <= 3; i++) {
    yield i;
  }
}

Obtemos um iterador:

javascriptlet iter = func();

Vamos verificar o funcionamento do nosso iterador:

javascriptconsole.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: undefined, done: true}
Задание 1

Crie um iterador, onde cada chamada retorne números de 10 até zero.

Задание 2

Faça um gerador que aceite um número como parâmetro. Que cada chamada do iterador decremente o número em um, até que zero seja alcançado.

Задание 3

Faça um gerador que aceite um número como parâmetro. Que cada chamada do iterador reduza o número pela metade e retorne o resultado. E assim, até que o número se torne menor que um.

Задание 4

Faça um iterador, onde cada chamada retorne a próxima potência de dois.

Задание 5

Faça um iterador, onde cada chamada retorne o próximo número de Fibonacci.