Цикли в генератори в JavaScript

Вътре в генераторите може да се използват цикли. При това можем да поставяме цикли на пауза с помощта на yield. Нека разгледаме пример. Ще поставяме цикъла на пауза при всяка итерация:

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

Получаваме итератор:

javascriptlet iter = func();

Проверяваме работата на нашия итератор:

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

Създайте итератор, всяко извикване на който ще връща числа от 10 до нула.

Задание 2

Направете генератор, който параметър ще приема число. Нека всяко извикване на итератора намалява числото с единица, докато не бъде достигната нула.

Задание 3

Направете генератор, който параметър ще приема число. Нека всяко извикване на итератора намалява числото наполовина и връща резултата. И така, докато числото не стане по-малко от единица.

Задание 4

Направете итератор, всяко извикване на който ще връща следващата степен на двойката.

Задание 5

Направете итератор, всяко извикване на който ще връща следващото число на Фибоначи.