функция нахождения наименьшего делителя числа итеративный процесс
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, время: 09:42. |