首先,我看到今天早些時候提出的這個相同的問題,我決定親自嘗試一下(並且遇到麻煩)。我希望沒關係,我爲此創建了一個新問題!編程Prolog中的二次公式
我試圖做一個prolog程序,解決二次公式X =( - b±√b 2 -4ac)/ 2a。實現的謂詞二次型([A,B,C],[Result])將a,b和c列表作爲第一個參數,並將結果列表作爲第二個參數。然而,名單給我帶來麻煩。我寫了這個代碼:
quadratic([A,B,C], [X]):-
underRoot([A,B,C], UnderRootResult),
UnderRootResult<0,
X is 0.
quadratic([A,B,C], [X]):-
underRoot([A,B,C], UnderRootResult),
UnderRootResult=:=0,
X is -B/2*A.
quadratic([A,B,C], [X]):-
underRoot([A,B,C], UnderRootResult),
UnderRootResult>0,
X is -B - sqrt(UnderRootResult)/2*A,
X is -B + sqrt(UnderRootResult)/2*A.
(這可能是錯誤百出,所以原諒我提前) 運行這會給我要underRoot/2未定義的程序錯誤。我真的不明白爲什麼會發生這種情況。我覺得我有如何編程這個總體想法,但我犯了很多新手的錯誤。我似乎無法找出問題所在,所以我會很感激任何幫助!另外,如果我被允許一次提出兩個問題,那麼如果在列表中> 0的情況下如何得到兩個X作爲一個結果?
謂詞以小寫開始,所以'UnderRoot'可能是錯了嗎? –
我不能相信這一點。對不起,犯了這個錯誤。 – Rose
您可以編寫** X是-B-sqrt(UnderRootResult)/(2 * A)**和** Y是-B + sqrt(UnderRootResult)/(2 * A)**並且您寫入L = [X ,Y]。 – joel76