我有麻煩計數嵌套列表中的列表數。計算嵌套列表中的列表數
count_lists([H|T],R):-
atomic(H),!,
count_lists(T,NR),
R is NR+1.
count_lists([[H|T]|Rest],R):-
!,
count_lists([H|T],R1),
count_lists(Rest,R2),
R is R1+R2.
count_lists([],0).
首先,我嘗試了列表中的一個元素是原子的基本情況,因此,我應該增加一個計數器。 (另外,我嘗試刪除原子謂詞,因爲我認爲由於它,我的代碼將計算嵌套列表中元素的數量,但它仍然不起作用) 然後,如果第一個元素是列表本身,我遞歸地在它和其餘列表上添加結果。 而第三條是規定的嵌套列表中的空單數爲0
?count_lists([[1,5,2,4],[1,[4,2],[5]],[4,[7]],8,[11]],R).
應該返回8而是返回12
你的謂詞只適用於由空列表遞歸構建的列表':-('。它在OP示例中給出的列表失敗。 –