以下の私のコードは、自然数の二乗を順番に生成するためのものです
(つまりsq(X). -> X=0; X=1; X=4; X=9; X=16; ...
)
nat(0).
nat(X) :- nat(Y), Z is Y+1, X is Z*Z.
しかし、私が得ている答えは次のとおりです。
1
0 ?- nat(X).
X = 0 ;
X = 1 ;
X = 4 ;
X = 25 ;
X = 676
迅速な修正が必要ですが、私はこれに言いたいよりも長い時間を費やしました. どんな助けでも大歓迎です!