私の質問の奇妙なタイトルでごめんなさい。私はプロローグを学び始めたばかりですが、問題が発生し、一連の数値の合計とそのべき乗を計算しています。たとえば、数値3を入力した場合、プロローグは-> 3 ^ 2 + 2 ^ 2 + 1 ^を出力するはずです。 2 =?私のために働いた唯一のことは数字を印刷することでしたが、最終的な結果ではありませんでした
calculation(X):-
X>0,write(X),
(
X=\=1 -> write('^2 + '),Result is X-1,calculation(Result);
write('^2 =')
).
私はいくつかの方法を試しましたが、すべて失敗しました。
次のように書く必要があります。
calculation(X) :-
calculation(X, 0).
calculation(X, Result):-
X >= 1 ->
(
writef('%w^2 + ', [X]),
X1 is X - 1,
Result1 is (2 ^ X) + Result,!,
calculation(X1, Result1)
)
;
writef('1^2 = %w',[Result]).
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加