2013-12-03 3 views
0

Я предполагаю написать п: N-> NНужна помощь, чтобы написать п: N-> N в прологе

f(0)=2,f(1)=0,f(2)=3 
f(n)=3f(n-3)+2f(n-2)-(n-1) for n>=3. 

как итерационно и рекурсивно,

Это то, что я до сих пор итеративно, но я продолжаю получать 3 для N> 2

f(0,2). 
f(1,0). 
f(2,3). 
f(N,F) :- 
    N>2, 
    N1 is N-1, 
    N2 is N-2, 
    N3 is N-3, 
    f(N1,F1), 
    f(N2,F2), 
    f(N3,F3), 
    F4 is F2*2, 
    F6 is F3*3, 
    F5 is F4+F6, 
    F is F5-F1. 

Любая помощь, которую вы можете нам дать, очень ценится!

+0

Возможно: http://stackoverflow.com/questions/20012913/writing-a-factorial-like-function-prolog/20013114#20013114 – ssBarBee

ответ

0

Прекрасно работает для меня!

?- f(5,X). 
X = 12 . 

?- f(6,X). 
X = 3 . 

?- f(7,X). 
X = 30 . 

?- f(8,X). 
X = 12 . 

Возможно, вы только что попытались с большими значениями, которые возвращают 3?

Кроме того, вы могли бы сделать:

f(N,F) :- N>2, N1 is N-1, N2 is N-2, N3 is N-3, 
      f(N1,F1), f(N2,F2), f(N3,F3), 
      F is 3*F3 + 2*F2 - F1. 
Смежные вопросы