Top.Mail.Ru
Ответы

Пожалуйста срочно помогите решить экзамен

Какие из приведенных ниже предикатов реализуют нисходящую рекурсию?

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.

По дате
По рейтингу
Аватар пользователя
Мастер
1мес

Для кого придумали Яндекс нейро?

Аватар пользователя
Новичок
1мес

Да это же пролог! Если коротко, то там только p3 сделана так, что результат считается прямо по ходу рекурсии, передается вниз. Это и есть та самая "нисходящая", ну или хвостовая рекурсия, как ее часто называют. Так что бери ответ "Только p3".