Predicates for recursive functions Prolog
Формулировка задачи:
Доброе время суток!
Я новичок в Prolog. Нам задали написать предикаты к рекурсивным функциям
Помогите пожалуйста, хотя бы с чего начать.
Заранее спасибо!
Решение задачи: «Predicates for recursive functions Prolog»
textual
Листинг программы
predicates func(integer,integer,integer) clauses func(0,_,0). %% f(x,y)= 0 if x=0 func(1,_,1). %% f(x,y)= 1 if x=1 func(X,Y,F) :- X>1, XX=X-2, func(XX,Y,FF), F=Y*Y+FF. goal write("x="),readint(X),write("y="),readint(Y),func(X,Y,F), write("f="),write(F),nl.
Объяснение кода листинга программы
predicates
- объявление функций в виде предикатов в Prologfunc(integer,integer,integer)
- определение функции с тремя аргументами типа integerclauses
- определение правил (условий) для функцииfunc
func(0,_,0).
- базовое правило для функцииfunc
когда аргументX
равен 0func(1,_,1).
- базовое правило для функцииfunc
когда аргументX
равен 1func(X,Y,F) :- X>1, XX=X-2, func(XX,Y,FF), F=Y*Y+FF.
- рекурсивное правило для функцииfunc
когда аргументX
больше 1goal
- определение цели (задачи) для программыwrite(
x=),readint(X),write(
y=),readint(Y),func(X,Y,F), write(
f=),write(F),nl.
- основной код программы, вывод значений переменныхX
,Y
,F
и вычисление функцииfunc
readint(X)
- функция для чтения целого числа с клавиатуры и присвоения его переменнойX
write(F)
- функция для вывода значения переменнойF
на экранnl
- функция для вывода символа новой строкиXX
- временная переменная для хранения значения аргументаX
в рекурсивной функцииfunc
FF
- временная переменная для хранения результата вызова функцииfunc
в рекурсивной функцииfunc
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д