我该如何解决这个问题?
输入: count_atoms(T,计数)
输出 count_atoms(A(B,C(d,e)中,f)中,计数)。 数= 4;
我真的不知道......请你能帮帮我吗?
答案 0 :(得分:1)
也许基于堆栈的方法可以提供帮助。您可以编写至少四个辅助谓词,如下所示:
% Increases accumulator if T is atomic + call to count_atoms/6
count_atoms(T, Stack, StackSize, Accumulator, Count) :- ...
% Gets the arity of T if T is compound + call to count_atoms/6
count_atoms(T, Stack, StackSize, Accumulator, Count) :- ...
% Gets Nth subterm of T and puts it on the stack + call to count_atoms/6
count_atoms(T, N, Stack, StackSize, Accumulator, Count) :- ...
% Pops element from stack + call to count_atoms/5
count_atoms(T, _, Stack, StackSize, Accumulator, Count) :- ...
但你仍然需要一个count_atoms / 2谓词和一个停止算法并产生结果。
答案 1 :(得分:0)