1

私は宣言したい!整数のフェイコリアルを計算するために使用される演算子。

私はこのコードをファイルに持っています。

:- arithmetic_function(!/1).

!(X,Y):-sil(X,1,Y).
sil(0,X,X):-!.
sil(N,A,X):-A1 is A*N,N1 is N-1,sil(N1,A1,X).

そして、op(500,yf,!) を使用して演算子を宣言します。このソリューションが機能しない理由は、arithmatic_function が my を登録しなかったように見えることを意味します。関数。

5を試すと!私は得る

エラー: 未定義の手順: (!)/1 エラー: ただし、次の定義があります: エラー: (!)/0 エラー: (!)/2 false。

4

1 に答える 1

1

Prolog の算術演算が is/2 によって導入されていることを単に忘れているだけです。

?- X is 6! + 1.
X = 721.
于 2013-04-17T05:36:59.810 に答える