Рекурсия: вычисление произведения N случайных чисел из диапазона от 0 до 1 - Prolog
Формулировка задачи:
Доброго времени суток, проблема с выполнением задачи на Прологе. Прошу помощи.
Создайте предикат, выполняющий с помощью рекурсии следующее действие
Вычисление произведения N случайных чисел из диапазона от 0 до 1.
Заранее спасибо.
Решение задачи: «Рекурсия: вычисление произведения N случайных чисел из диапазона от 0 до 1»
textual
Листинг программы
mult_rand(N, M) :- N > 0, N1 is N - 1, !, mult_rand(N1, M0), M is M0 * random_float. mult_rand(_, 1).
Объяснение кода листинга программы
Код рекурсивно вычисляет произведение N случайных чисел из диапазона от 0 до 1. Вот список описывающих его элементов:
N- количество случайных чисел, которые нужно перемножить (типа integer)M- переменная для хранения произведения (типа integer)N1- временная переменная для уменьшенияNна единицу (типа integer)M0- временная переменная для хранения произведения (типа integer)random_float- генератор случайного числа в диапазоне от 0 до 1 (типа float)!- оператор разрешения (используется для предотвращения вызова процедуры из её же тела)mult_rand(N1, M0)- рекурсивный вызов процедуры с уменьшенным на единицуNи текущимMM is M0 * random_float- пересчитываниеMкак произведения текущегоM0и случайного числаrandom_floatmult_rand(_, 1)- базовый случай для рекурсии, когдаNравно 1 Элементы списка выделены в виде описания переменных и действий, которые происходят в коде.