Рекурсия: заполнение одномерного массива целыми случайными числами без повторений - Prolog

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, с задачей. 1. Описать функцию для заполнения одномерного массива целыми случайными числами без повторений. Использовать рекурсию.

Решение задачи: «Рекурсия: заполнение одномерного массива целыми случайными числами без повторений»

textual
Листинг программы
  1. domains
  2.   n=integer
  3.   lrand=n*
  4.  
  5. predicates
  6.   random_list(lrand,n)
  7.  
  8. clauses
  9.  
  10.   random_list([],0).
  11.   random_list([H|T],N):-
  12.   N>0,
  13.   random(10,H),
  14.   N1=N-1,
  15.   random_list(T,N1).
  16.    
  17. goal
  18.   random_list(X,10).

Объяснение кода листинга программы

В коде используется язык программирования Prolog.

  1. domains - определения типов переменных:
    • n=integer - переменная n является целым числом;
    • lrand=n* - переменная lrand является произвольным (случайным) целым числом, умноженным на n.
  2. predicates - определения функций:
    • random_list(lrand,n) - рекурсивная функция для заполнения списка lrand случайными целыми числами без повторений.
  3. clauses - определения правил:
    • random_list([],0). - базовый случай: пустой список приравнивается нулю.
    • random_list([H|T],N):- - рекурсивный случай: список H|T (голова и хвост списка) приравнивается N (остаток числа n, вычтенный из N).
    • random(10,H) - вызов функции random для получения случайного целого числа от 0 до 9.
    • N1=N-1 - вычисление нового значения N1 как N-1.
    • random_list(T,N1). - рекурсивный вызов функции random_list для списка T и значения N1.
  4. goal - основная цель: заполнить список X случайными целыми числами без повторений длиной в 10 элементов. Таким образом, код рекурсивно заполняет список случайными целыми числами без повторений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы