Вопрос №55585 от пользователя Аcя Калинина в уроке «Переменные, декларативное и императивное программирование», курс «Введение в программирование»
Добрый день! Помогите, пожалуйста, с кодом. https://ru.hexlet.io/code_reviews/419296 Выдает не тот результат, который хотелось бы получить.
Анастасия Калинина, здравствуйте.
- Делитель должен быть больше единицы, за исключением случая, когда аргументом является единица (наименьшим делителем которой является также единица).
Попробуйте начинать цикл с делителя равным двойке.
Уже ставила двойку, попробовала снова и выдает также ошибочный результат
Проверку на случай когда аргумент единица забыли добавить в функцию.
FAIL __tests__/solution.test.js
✕ solution (6 ms)
● solution
expect(received).toBe(expected) // Object.is equality
Expected: 1
Received: 3
6 | expect(smallestDivisor(-3)).toEqual(NaN);
7 | expect(smallestDivisor(0)).toEqual(NaN);
> 8 | expect(smallestDivisor(1)).toBe(1);
| ^
Добавила, теперь так: Expected: 2 Received: 1
7 | expect(smallestDivisor(0)).toEqual(NaN);
8 | expect(smallestDivisor(1)).toBe(1);
> 9 | expect(smallestDivisor(4)).toBe(2);
| ^
10 | expect(smallestDivisor(121)).toBe(11);
11 | expect(smallestDivisor(3)).toBe(3);
12 | expect(smallestDivisor(8)).toBe(2);`
`
В условии проверки вы присваиваете единицу, а не проверяете на равность.
Обратите внимание на цикл с делителем, возьмите любое число и по шагам посмотрите, как работает ваш алгоритм и что нужно подправить.
Анастасия, добрый день! Обратите внимание на третий пункт в описании алгоритма:
Если число не делится без остатка на текущий делитель, то попробуйте следующий делитель.
Получается цикл должен работать, пока число НЕ делится без остатка. В цикле нужно увеличивать делитель на единицу. Как только делитель будет найден, нужно его вернуть
Используйте Хекслет по-максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт