Проверяйте делимость на 15 раньше отдельных условий для 3 и 5. Иначе число, кратное обоим делителям, попадёт в первую подходящую ветку и не даст FizzBuzz.
Реализация правила FizzBuzz
Проверяйте делимость на 15 раньше отдельных условий для 3 и 5. Иначе число, кратное обоим делителям, попадёт в первую подходящую ветку и не даст FizzBuzz.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, принимающую целое число n и выводящую последовательность от 1 до n. При этом вместо числа выводятся специальные строки: если текущее значение делится на 3 — выводится «Fizz», если делится на 5 — выводится «Buzz», а если одновременно делится и на 3, и на 5 — выводится «FizzBuzz».
Ответ
Проверяйте делимость на 15 раньше отдельных условий для 3 и 5. Иначе число, кратное обоим делителям, попадёт в первую подходящую ветку и не даст FizzBuzz.
function fizzBuzz(n) {
for (let value = 1; value <= n; value++) {
console.log(value % 15 === 0 ? 'FizzBuzz' :
value % 3 === 0 ? 'Fizz' : value % 5 === 0 ? 'Buzz' : value);
}
}
Контракт предполагает конечное целое n; для n < 1 цикл ничего не выводит. Ноль не входит в последовательность, поскольку начало равно 1. Алгоритм выполняет O(n) шагов и использует O(1) дополнительной памяти, не считая самой консоли.