[英]Prolog Recursive List Comparison
我剛剛啟動Prolog,為了進行練習,我嘗試比較兩個列表,看看第一個列表是否比第二個列表大一個元素。 到目前為止,我已經有了基本情況,但是對於任何包含多個元素的列表,它都會無限循環。 誰能解釋為什么會這樣? 任何信息表示贊賞。
碼
one_longer([H],[]).
one_longer([H|T],[H2|T2]) :- one_longer([T],[T2]).
該子句應為:
one_longer([H|T],[H2|T2]) :- one_longer(T,T2).
當one_longer([T],[T2])
形成一個只有一個元素的新列表時,這會導致觀察到的循環,因為再次應用該規則會導致不斷詢問one_longer([[]],[[]])
在哪里one_longer(T,T2)
將one_longer
應用於兩個列表的其余部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.