为什么这个因子实现不起作用:
factorial(0, B) :- B is 1.
factorial(A, B) :-
A > 0,
Ax is A-1,
B is A*Bx,
factorial(Ax, Bx).
这有效:
factorial2(0, B) :- B is 1.
factorial2(A, B) :-
A > 0,
Ax is A-1,
factorial2(Ax, Bx),
B is A*Bx.
答案 0 :(得分:2)
因为is/2
需要右侧完全实例化。
在您的第一个示例中,Bx未实例化并在右侧使用,而在第二个示例中,它在实例化后使用。