Иван Сигаев
Искусственный Интеллект
(156926)
5 лет назад
Ну как не подсказывая показать ошибку ?
random(x, y);
замени на
return random(x, y);
Хотя это не решение задания, но твоя программа уже будет работать
Yury ChebuninУченик (138)
5 лет назад
Большое спасибо, а можно еще немного поподробнее?
В чем отличие? То есть, я понимаю, что он возвращает результатом функцию, которая "запускается снова", если условие не выполняется.
Но можно описать мою ошибку подробнее? Почему так не работает и что происходит в моем случае по шагам? Буду очень благодарен )
Elepsis Eclipse
Гений
(67331)
5 лет назад
function random(min, max) {
let value = Math.random();
if (value >= min && value < max) {
return value;
} else {
random(x, y);
}
}
alert( random(0.1, 0.5) );
Интерпретатор видит вызов функции alert и хочет вывести переданное ему значение. А вместо значения: Другая функция. Должен сперва вызвать его, и вывести результат вызова функции random.
А вызов функции возвращает то, что записано после return. Если нет return - все функции возвращают undefined.
Если с первого раза попадает на интервал: Возвращается value,
else: вызывается та же функция, но без return: функция возвращает undefined, а результат нового вызова random никуда не записывается, и просто стирается.
________
P.s. весь подход изначально неправильный... Это решается без повторных вызовов, в одну строчку.
Встроенный метод Math.random() возвращает случайное число от 0 (включительно) до 1 (но не включая 1)
Напишите функцию random(min, max), которая генерирует случайное число с плавающей точкой от min до max (но не включая max).
Пример работы функции:
alert( random(1, 5) ); // 1.2345623452
alert( random(1, 5) ); // 3.7894332423
alert( random(1, 5) ); // 4.3435234525
Мне не нужно решение этой задачи, не подсказывайте, пожалуйста
Единственное, подскажите, почему не работает моя функция?
Вот код:
"use strict"
function random(min, max) {
let value = Math.random();
if (value >= min && value < max) {
return value;
} else {
random(x, y);
}
}
let x = +prompt('Введите минимальное значение от [0 до 1)', '');
let y = +prompt('Введите максимальное значение от [0 до 1)', '');
alert(random(x, y));