Пожалуйста срочно помогите решить экзамен
Какие из приведенных ниже предикатов реализуют нисходящую рекурсию?
domains
il=integer*
ilt=t(integer.ilt):nil
predicates
pl(ilinteger)
p1(il.integer.integer)
p2(ilt,integer)
p2(ilt.integer.integer)
p3(ilt.integer)
p3(ilt,integer.integer)
clauses
p1(T,R):-p1(T,0.R).
p1([N[Rt].A,R):-p1(RL,A,RtR),
R=Nt+R1R.
p1([].R.R).
p2(T.R):-p2(T.0.R).
p2(t(Nt,Rt).A.R):-p2(Rt,A.RtR).
R=N1+R1R.
p2(nil,R.R).
p3(T,R):-p3(T,O,R).
p3(t(Nt,Rt),A.R):-A1=A+Nt,
p3(Rt.AL.R).
p3(nil,R,R).
Выберите один ответ:
a. Только р3.
b. p1 и p2.
c. Ни один из предикатов не запустится из-за синтаксических ошибок.
d. Ни один.
e. p2 и р3.
Для кого придумали Яндекс нейро?
Да это же пролог! Если коротко, то там только p3 сделана так, что результат считается прямо по ходу рекурсии, передается вниз. Это и есть та самая "нисходящая", ну или хвостовая рекурсия, как ее часто называют. Так что бери ответ "Только p3".