функция нахождения наименьшего делителя числа итеративный процесс
const smallestDivisor = (num) => { const denominator = 2; const result = (num, denominator) => { return (num % denominator); } if (result === 0) { return denominator; } *!*result(num, denominator+1);*/!* }; smallestDivisor(100); Суть программа для нахождения наименьшего делителя числа, работает просто прибавляет к делителю 1 и смотрит если делит без остатка то все ок и возвращает делитель Но не работает в 9 строчке возвращает undefined |
const smallestDivisor = num => { let d = 2; while(num % d++) {} return d; }; smallestDivisor(100); Оно? |
Цитата:
Мне не нужно решение мне нужно понять почему происходит ошибка |
Цитата:
По этому функция вызывается один раз. (ваш К.О.) Условие где стоит return не выполнятся по этому результат выражения == undefined (ваш К.О.) :D |
Цитата:
допустим if не выполняется но есть же всегда другая ветка result(num, denominator+1); |
Alexsandr, return перед вызовом не стоит.
|
|
1 const smallestDivisor = (num) => { 2 // BEGIN (write your solution here) 3 const denominator = 2; 4 const result = (num, denominator) => { 5 return(num%denominator); 6 } 7 result(num, denominator); 8 if (result === 0) { 9 return denominator; 10 } else if (denominator === 10) 11 { 12 return 1; 13 } else { 14 return result(num, denominator+1); 15 } // END 16 }; 17 18 smallestDivisor(10); В седьмой строке вычисляется значение функции-константы result В восьмой строке сравнивается значение result c 0 Проблема в том что ничего не происходит, программа идет дальше вниз хотя условие должно выполняться Почему так ведь result это функция и когда она вычисляется то уже константа, или в условии выполняется функция? if (result === 0) |
Alexsandr, так Вы пытаетесь саму функцию сравнить с нулём, а не результат её выполнения.
const smallestDivisor = (num) => { const denominator = 2; const result = (num, denominator) => { return (num % denominator); } if (result(num, denominator) === 0) { return denominator; } return result(num, denominator+1); }; smallestDivisor(100); |
Цитата:
|
Часовой пояс GMT +3, время: 07:40. |