规则

时间:2016-04-26 02:00:26

标签: prolog

fooA(1,1).
fooA(N,X) :-
    M is N-1,
    fooA(M,Y),
    X is 3*Y+1.

如果我运行fooA(3,X),那么X is 13

为什么fooA(5,X)会导致X is 10 ??

代码应符合以下规则:

  
      
  1. fooA(1,1)是事实

  2.   
  3. 如果M is N-1fooA(M,Y)以及X is 3*Y+1fooA(N,X)true

  4.   

所以fooA(5,X)解决方案是:

25

但事实并非如此,我的程序会生成10

有人可以解释程序程序并指出我的错误。

0 个答案:

没有答案