0

この階乗の実装が機能しない理由:

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.
4

1 に答える 1

2

is/2右側を完全にインスタンス化する必要があるためです。

最初の例では、Bxはインスタンス化されておらず、右側で使用されていますが、2番目の例では、インスタンス化された後に使用されます。

于 2012-05-09T19:34:23.427 に答える