0
polarbear([],H,[H]).
polarbear([H|T],Y,[H|Z]):- polarbear(T,Y,Z).
這是序言碼。當進入?-polarbear([1,2], 6, P).
獲取P =[1,2,6].
Prolog中遞歸的具體示例
的事情是我只是不明白它是如何工作的,我一直在試圖找出Prolog是如何做它在做什麼。
我對Prolog有一些經驗,但是我不明白這一點,所以對於它如何做以幫助我理解Prolog會有什麼指導將不勝感激。
謝謝。這肯定有幫助。因此,它嘗試第一個子句並失敗,然後將提供的列表拆分爲頭部和尾部,6變成Y,最後一個變量保留爲未知變量。然後它再次運行Polarbear,再次失敗第一個子句,再次轉到第二個子句,然後這就是我感到困惑的地方,它如何移動值。對不起,我只是想明白它究竟發生了什麼,我認爲我沒有深度,但找不到一個好的資源。 –
第一次調用(第二個子句):H = 1,T = [2],Y = 6。第二次調用:H = 2,T = [],Y = 6.第三次調用第一個子句匹配,所以list = [6 ]。然後回到第二個呼叫(H = 2),列表= [2,6],首先呼叫(H = 1)列表= [1,2,6]。 –