好的,我最後一個序言問題。這是常見的基因學問題。Prolog作業幫助
我想採取事實的列表,並有一個名爲後裔的功能, 將返回一個包含所有後代的列表。例如:
給出的規則:
parent('Bob', 'Tim').
parent('Joe', 'Bob').
函數調用:
descendant('Joe', X).
應該返回:
X = ['Bob', 'Tim'].
我能得到它返回的「直接後裔喬'但不是全線。這是我的。
% Recursive case
descendant(X,DList) :- parent(X,A), NewDList = [A|DList],
descendant(A, NewDList).
% Base case, I have a feeling this is wrong.
descendant(_,[]).
此代碼只似乎返回true或false,或者只是一個空的[]。
我可以使用一些幫助,我可能需要看看。謝謝。
我不認爲這有效,如果有人超過o ne直接後代,例如,如果Joe也是Mary的父母。 – 2010-03-05 16:03:10
你測試過了嗎?如果不是,請測試然後批評。我只是測試它。我工作正常。我確定它不適用於某些數據請給出一個證明 – Andrey 2010-03-05 16:06:23
我給出的例子不起作用 - 如果我加上父母('Joe','Mary'),那麼Joe的後代仍然列出作爲鮑勃和蒂姆(雖然瑪麗是作爲回溯時的進一步結果) – 2010-03-05 16:16:48