Я изо всех сил пытаюсь окунуться в тройные операторы, поэтому я подумал, что возьму недавний пример, который мне натолкнулся и понравился, и попытайтесь реорганизовать его в более базовую (хотя и многословную) нотацию. Однако моя реализация вызывает ошибку, в то время как тройная версия, которую я пытаюсь восстановить, работает нормально.Реализация Euclidean GCF приводит к «Ошибка диапазона: превышен максимальный размер стека вызовов».
Тройная версия алгоритма Евклида для вычисления GCF из двух чисел:
function gcd(a, b) {
return !b ? a : gcd(b, a % b);
}
И моя попытка ее реализации
function gcf2(a, b) {
if(b !== a){
gcf2(b, a % b);
}
else {
g = b;
}
}
Я прочитал описание MDN тройных операторов, но ясно, что я еще не понимаю его из результатов.
Какую часть вы не понимаете? Первая функция оценивает '! B'. Если он оценивает значение 'true', он возвращает' a', иначе он возвращает 'gcd (b, a% b)'. –