私はリスト[1,3]
を持っていて、最小のものを入力せずにコード内の平均を計算しようとしています。私はそれが正常に動作するように正しい構文がわからない、最初の行だけ問題を抱えているので、正常に呼び出され、プロローグを実行するときに数値を入力して正常に動作します。プロローグコードのナレッジベース内の既存のリストの平均を計算するにはどうすればよいですか?
average([1,3],X).
average(List, Result) :- sum1(List, Len), sum(List, Sum), Result is Sum/Len.
sum([], 0).
sum([H|T], Sum) :- sum(T, Temp), Sum is Temp + H.
sum1([],0).
sum1([_|B],L):-sum1(B,Ln), L is Ln+1.
SWIのプロローグでリストの平均を計算するための簡単な方法ですか? – abarisone
最初に値が0になると、リストにある値が徐々に加算され、リストに値がなくなるとSはAの値を取ります。同様にlength/3はリストの要素数を計算します。A1その値をインクリメントし、それぞれの再帰でAに渡します。最後に要素がなくなると、LはLの値を取ります。平均は単にsum/lemgthです。 –