[Turbo Prolog] Заполнение списка пятью элементами по формуле A(N)=1/N
Формулировка задачи:
Добрый вечер.
Суть задачи:
Составьте программу заполнения списка пятью элементами, которые вычисляются по формуле A(N)=1/N.
Есть код программы:
Программа считает неправильно в функции calc, не могу никак понять как уменьшать H для следующего деления. Подскажи, пожалуйста, как подправить. Спасибо.
немного поправил
подскажите, пожалуйста, как избежать деления на 0?
Решение задачи: «[Turbo Prolog] Заполнение списка пятью элементами по формуле A(N)=1/N»
textual
Листинг программы
domains rl=real* int=integer predicates mklist(int,int,rl) task(int,rl) clauses mklist(N,N,[Q]) :- Q=1/N, !. mklist(N,M,[H|T]) :- M1=M+1, H=1.0/M, mklist(N,M1,T). task(N,R) :- mklist(N,1,R).
Объяснение кода листинга программы
- В данном коде используется язык программирования Prolog.
- Код содержит два домена: rl (реальные числа) и int (целые числа).
- У него есть две предположительные функции: mklist и task.
- Функция mklist принимает три аргумента: N (размер списка), M (номер элемента, который обрабатывается в рекурсии) и R (результат).
- Есть два случая в функции mklist:
- Если N равно M, то возвращается Q, равное 1/N.
- Если N больше M, то H (значение элемента) равно 1.0/M, а затем вызывается функция mklist с новыми значениями N и M1 (M+1).
- Функция task принимает два аргумента: N (размер списка) и R (результат).
- В функции task вызывается функция mklist с аргументами N и 1 (начальный размер списка).
- Результатом работы программы будет список из пяти элементов, где каждый элемент будет равен 1.0/N.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д