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.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мастер

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

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

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