Smyčky v generátorech v JavaScriptu

Uvnitř generátorů lze používat smyčky. Zároveň můžeme smyčky pozastavovat pomocí yield. Podívejme se na příklad. Budeme smyčku pozastavovat každou iteraci:

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

Získáme iterátor:

javascriptlet iter = func();

Ověříme funkci našeho iterátoru:

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

Vytvořte iterátor, jehož každé volání bude vracet čísla od 10 k nule.

Задание 2

Vytvořte generátor, který parametrem bude přijímat číslo. Nechť každé volání iterátoru sníží číslo o jednu, dokud nebude dosaženo nuly.

Задание 3

Vytvořte generátor, který parametrem bude přijímat číslo. Nechť každé volání iterátoru sníží číslo na polovinu a vrátí výsledek. A tak dále, dokud číslo nestane menší než jedna.

Задание 4

Vytvořte iterátor, jehož každé volání bude vracet další mocninu dvojky.

Задание 5

Vytvořte iterátor, jehož každé volání bude vracet další Fibonacciho číslo.