@yagyar001

Почему не работает функция?

Всем привет. Учу js. Тренируюсь с функциями. Задача, создать функцию, которая параметрами будет принимать 2 числа и возвращать наибольший общий делитель. Но результат выполнения кода undefined.
Что я сделал не так?
function dividers(num){
	let arr = [];
	for (var i = 1; i <= num; i++) {
		if (Number.isInteger(num / i)) {
			arr.push(i);
		}
	}
	return arr;
}

function getGreatestCommonDivisor (num1, num2) {
	let res1 = dividers(num1);
	let res2 = dividers(num2);
	if (res1.length > res2.length) {
		for (var i = res2.length; i >= 1; i--) {
			if (res1.indexOf(res2[i]) != -1) {
				return res2[i];
			}
		}
	}
}
console.log(getGreatestCommonDivisor(1000, 2000));
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
Dr_Elvis
@Dr_Elvis
В гугле забанен
У тебя в условии
if (res1.length > res2.length)
но нет обратного. если вызвать наоборот
console.log(getGreatestCommonDivisor(2000, 1000));
то уже будет лучше, возвращает нужное значение, но всё равно не верно работает.
Предлагаю так, чтобы само определяло какой массив больше.
function getGreatestCommonDivisor (num1, num2) {
  let res1 = dividers(num1);
  let res2 = dividers(num2);
  let a = res1;
  if (res1.length > res2.length) {
    a = res2;
  }
  for (var i = a.length; i >= 0; i--) {
    if (res1.indexOf(a[i]) != -1) {
      break;
    }
  }
  return a[i];
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы