Функция находящая минимальное число
Всем привет. У меня есть функция которая находит минимальное число которое больше 300 и нацело делиться на 17. Теперь мне нужно переписать эту функцию под рекурсию, с которой я к сожалению плохо знаком, буду благодарен если поможете кодом.
function minNumber(x, b){ while (true) { if (x % b==0) { console.log(x); break; } x++; } } minNumber(300, 17) |
student_js28,
махнёмся, вы решение без цикла, в одну строку, вернуть сразу нужное число, а в замен рекурсию? |
Честно говоря, не особо понимаю как можно решить данную задачу без цикла ввиду малого опыта, буду признателен если поможете разобраться
|
Ну как бы еще и математику немного надо знать.
const minNumber = (x, n) => (Math.floor(x/n)+1)*n alert(minNumber(300, 17)) |
:-?
function minNumberNoRecursion(x, b){ return x + b - x % b } console.log(minNumberNoRecursion(300, 17)) function minNumberRecursion(x, b){ return ++x % b ? minNumberRecursion(x, b) : x } console.log(minNumberRecursion(300, 17)) |
Это на курсах по программизму дают такие идиотские задачи на рекурсию?
|
function minNumber(x, b) { if(x % b == 0) return x; else return minNumber(x + 1, b); } alert(minNumber(300, 17)); Вот код. Суть проста, вызываем функцию с начальными значениями 300 и 17, дальше делаем проверку - если Х делится нацело на 17, то выходим и возвращаем этот самый Х. Иначе, число Х не делится нацело на 17 и в таком случае мы снова вызываем эту же функцию, но меняем во входящих значениях Х на Х + 1, то есть увеличиваем на 1. Дальше функция начинается сначала и теперь мы пробуем уже не 300 поделить на 17, а 301. Если не сработало, то мы опять вызываем функцию с изменением аргумента Х на Х + 1. Теперь Х = 302. И так до тех пор, пока не будет найден ответ. |
Gubka_Morty,
чем ваш код отличается от пост #5 строка 6? |
Часовой пояс GMT +3, время: 09:42. |