需要帮助在prolog中写f:N> N.

时间:2013-12-03 19:56:59

标签: recursion prolog iteration

我想写f: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.

非常感谢您给我的任何帮助!

1 个答案:

答案 0 :(得分: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.