Я работаю над назначением javascript, и у меня есть некоторые проблемы с пониманием кода. Я работаю с этим кодом, и он работает, но я хочу сломать его дальше, чтобы действительно понять, что происходит. Я прокомментировал те части, которые я действительно понимаю, но оставил вопросы по некоторым из более сложных частей для меня.Найти самый низкий общий кратный диапазон чисел
//Finding the Least Common Denominator with a Recursive Euclidean Algorithm
//GCD = Biggest Number that is divides into both evenly
function gcd(a, b) {
return b ? gcd(b, a % b) : Math.abs(a); //Ternary Operator to run if b is valid
//Is this ternary operator only checking if the variable b exists?
}
//Least Common Multiple = Smallest number that is divisible by both numbers
//Euclidean Algorithm
function scm(a, b) {
return (a * b)/gcd(a, b);
}
//Iterate through each part of the array to find the LCM overall
function smallestCommons(arr) {
arr = arr.sort();
result = 1;
for (var i = arr[0]; i <= arr[1]; i++) {
//I am not quite sure what is happening in this for loop.
result = scm(result, scm(result, i));
}
return result;
}
document.write('<pre>' + smallestCommons([1, 5]) + '</pre>');
Тройной оператор проверяет, если переменная 'b' является [ "truthy"] (https://developer.mozilla.org/en-US/docs/Glossary/Truthy) или [ "falsy"] (https://developer.mozilla.org/en-US/docs/Glossary/Falsy). Прочтите [ternary operator] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator) документы и, пожалуйста, исследуйте свои вопросы, прежде чем спрашивать здесь. – Blazemonger
Первый - это просто ярлык для if/else. И его использование рекурсии (вызов самой функции) для поиска GCD. – Wazaaaap
Действительно ли 60 - это LCM [1,5]? ;-) –