0
predicates
pathdistance(symbol,symbol,integer).
solve(symbol,symbol,integer).
clauses
pathdistance(a,b,10).
pathdistance(b,c,20).
pathdistance(c,d,5).
pathdistance(d,e,15).
pathdistance(a,d,5).
pathdistance(c,e,10).
solve(X,Z,C):-
pathdistance(X,Z,C).
solve(X,Z,C):-
pathdistance(X,Y,Cost),
solve(Y,Z,C),
Cost is Cost+C.
goal
solve(a,d,Cost).
我想要的成本答案是a和d之間的所有C(總距離)的總和。上面的代碼不起作用,它不允許我帶一個新變量,可以請某人做上面的代碼的變化,以便我可以在Cost.Please總的距離。請記住,我是新的序言,謝謝!我可以跟蹤我在遞歸中工作時獲得的其他變量的值嗎?
代碼是正確的我知道,但我不知道爲什麼它總是給'無解',當我採取間接路徑從a到c或e。另外'是'在turbo prolog中不起作用,因此iam使用'=',我希望它不會有所作爲。 – Zohaib
您所做的修改使代碼錯誤。您的行Acc是Acc + Cost使得該子句爲假,因爲Acc已經綁定,這就是爲什麼您需要聲明一個新變量(在我重命名後NewTotalCost)。我恢復了你的編輯並給變量賦予了更好的名字。 – m09
非常感謝,我明白了。 – Zohaib