###質問内容
???? + ???? = ???? であるような自然数????, ????, ???? の組を具体値ですべて列挙する述語addall(????, ????, ????)を作りたいと思い,以下のように書いたのですが,AとCにしかs()を使えていないので,A=C, B=0でずっと続いてしまい,思うような結果を得ることが出来ません.
この再帰は無限回,深く見てしまうので,この下に何かを書いてBを操作することもできません.
どのようにすれば,Bの値も網羅的に見ていくことが出来ますでしょうか.
###書いたコード
prolog
1addall(0,0,0). 2addall(s(A),B,s(C)):- addall(A,B,C).
###注意事項
ここでの自然数は0を含むこととします.
また,s()は加算を表し,1はs(0),2はs(s(0))のように表します.
###求める実行結果
addall(A,B,C). A = B, B = C, C = 0 ; A = 0, B = C, C = s(0) ; A = C, C = s(0), B = 0 ; A = 0, B = C, C = s(s(0)) ; A = B, B = s(0), C = s(s(0)) ; A = C, C = s(s(0)), B = 0 ; A = 0, B = C, C = s(s(s(0))) ; A = s(0), B = s(s(0)), C = s(s(s(0))) ; A = s(s(0)), B = s(0), C = s(s(s(0))) ; A = C, C = s(s(s(0))), B = 0 ; ...
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/26 21:48