GCD / НОД
Пример с деструктуризацией
Задачка для собеседования — написать функцию вычисления наибольшего общего делителя — НОД (GCD).
Наибольший общий делитель целых чисел — это наибольшее из натуральных чисел, которое делит каждое из данных чисел. Например gcd(30,15) = 15.
Пример решений на ES6+ с деструктуризацией
Цикл
function gcd(x, y) {
while (y != 0) [ x, y ] = [ y, x%y ]
return x
}Рекурсивный вариант
const gcd = (x, y) => y == 0 ? x : gcd(...([ x, y ] = [ y, x%y ]))Расширяем до N-аргументов
Далее можно попросить изменить решение так, чтобы можно было передать несколько аргументов. Можно, конечно, переписать реализацию, но я бы посоветовал использовать функциональный подход, превратив вышеописанную функцию в базовую, а отдельно написал бы входную функцию редьюсер:
// переименовываем gcd в gcd42n // 42n - for two numbers// Создаем новую функцию редьюсер
const gcd = (...a) =>
a.reduce((a,i) => gcd42n(a,i), 0)
;// Проверяем
gcd(16,-48,72) // 8
