Loops in generators in JavaScript

Loops can be used inside generators. At the same time, we can pause loops with yield. Let's look at an example. We will pause the loop every iteration:

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

We get an iterator:

javascriptlet iter = func();

Let's test our iterator:

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

Create an iterator, each call of which will return numbers from 10 to zero.

Задание 2

Make a generator that takes a number as a parameter. Let each iterator call decrease the number by one until zero is reached.

Задание 3

Make a generator that takes a number as a parameter. Let each iterator call decrease the number by half and return the result. And so on, until the number becomes less than one.

Задание 4

Make an iterator, each call of which will return the next power of two.

Задание 5

Make an iterator, each call of which will return the next Fibonacci number.