Показать сообщение отдельно
  #13 (permalink)  
Старый 02.06.2017, 14:46
Интересующийся
Отправить личное сообщение для Alexsandr Посмотреть профиль Найти все сообщения от Alexsandr
 
Регистрация: 22.05.2017
Сообщений: 25

const smallestDivisor = (num) => {
      const iter = (counter, num) => { // counter это делитель, начинает с числа 2 и дальше +1 
    if ((num % counter) === 0) {// проверяет если делиться без остатка то возвращает делитель
      return counter;
      } else if (counter === 10) {// если так и не поделилось а мы перебрали все делители до 10 то дальше делить не имеет смысла и это число делиться только на себя возвращаем само число
        return num;
      } else {// в остальных случаях делаем все по новой но прибавляем к делителю +1
     iter(counter+1, num);
      }
  }
  return iter(2, num);
};

https://goo.gl/05Bxj7 ссылка на работу функции

Не знаю почему так сначала функция iter(2, 11);
вычисляет добавляя +1
iter( 3, 11);
iter( 4, 11);
iter( 5, 11);
iter( 6, 11);
iter( 7, 11);
iter( 8, 11);
ter( 9, 11);
iter( 10, 11);
return num; потому как мы перебрали все делители до 10 и дальше не имеет смысла, значит наименьший делитель само число
Но тут происходит странное
Return value 11
Return value undefined и все складывается обратно со значением Return value undefined Почему так?
Ответить с цитированием