Арифметические операции (Степень и сумма) - Prolog
Формулировка задачи:
Нужно написать программу (Turbo Prolog) для вычисления:
Вот, что сам написал, но выдает ошибку:
Ошибка:
Листинг программы
- domains
- int=real
- predicates
- y(int,int,int,int)
- st(int,int,int,int,int)
- stw(int,int,int,int,int)
- yw(int,int,int)
- clauses
- y(X,_,_,Y):-
- X<2,
- Y = X*0,!.
- y(X,N,M,Y):-
- st(X,N,M,K,Y).
- st(X,N,M,K,Y):-N1 = N-1,
- st(X,N1,M,K1,Y), K=K1*X, stw(X,K,M,J,Y).
- stw(X,M,K,J,Y):-M1=M-1,
- stw(X,M1,K,J1,Y), J=J1*X, yw(K,J,Y).
- yw(K,J,Y):- Y=K+J.
1002 Stack overflow. Re-configure with Options if necessary.
Как можно исправить?Решение задачи: «Арифметические операции (Степень и сумма)»
textual
Листинг программы
- predicates
- y(real,integer,integer,real)
- pow(real,integer,real)
- clauses
- pow(X,K,R) :- L=LN(X), R=exp(L*K).
- y(X,_,_,2.0) :- X<2.
- y(X,N,M,R) :- X>2, pow(X,N,R1), pow(X,M,R2),R=R1+R2.
- y(2.0,_,_,0).
Объяснение кода листинга программы
- В коде присутствуют три предиката:
- pow(real,integer,real), который вычисляет степень числа
- y(real,integer,integer,real), который выполняет проверку и вычисляет результат арифметических операций
- LN(real), который вычисляет натуральный логарифм числа
- В первом утверждении предиката pow(X,K,R) вычисляется степень числа X в K раз. Значение переменной R вычисляется как экспонента от произведения натурального логарифма числа X и целого числа K.
- Во втором утверждении предиката y(X,N,M,R) выполняется проверка, что число X больше 2, затем вычисляются значения переменных R1 и R2 с помощью предиката pow(X,N,R1) и предиката pow(X,M,R2). Затем значение переменной R вычисляется как сумма R1 и R2.
- В третьем утверждении предиката y(2.0,,,0) выполняется проверка, что число X равно 2.0, и значение переменной R устанавливается равным 0.
- В четвёртом утверждении предиката y(2.0,,,0) выполняется проверка, что число X равно 2.0, и значение переменной R устанавливается равным 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д