Найдите подходящие дроби рационального числа(Используя рекурсию) - Prolog
Формулировка задачи:
Вариант 1. Найдите походящие дроби рационального числа X/Y (х – неотрицательно, у – положительно). Например,
5/6=0+1/(1+1/5 ) , то есть для х = 5, у = 6 ответом будет последовательность [0; 1, 5].
Решение задачи: «Найдите подходящие дроби рационального числа(Используя рекурсию)»
textual
Листинг программы
domains int=integer intl=int* predicates pdr(int,int,intl) clauses pdr(P,Q,[N]) :- P mod Q = 0, P div Q = N, !. pdr(P,Q,[H|T]) :- H=P div Q, M = P mod Q, pdr(Q,M,T).
Объяснение кода листинга программы
- domains определяют типы данных переменных. В данном случае, int - это целочисленный тип данных, а intl - это указатель на целочисленный тип данных.
- predicates - это определения отношений между переменными. В данном случае, pdr - это отношение между тремя переменными: P, Q и N.
- clauses - это конкретные факты или правила, которые определяют поведение программы. В данном случае, есть два правила для отношения pdr:
- Если P mod Q равно 0 и P div Q равно N, то отношение pdr между P, Q и N истинно.
- Если P mod Q не равно 0, то отношение pdr между P, Q и N не истинно. Вместо этого, мы находим значение H, которое равно P div Q, и M, которое равно P mod Q. Затем мы рекурсивно вызываем отношение pdr между Q и M, и добавляем H в список T.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д