【发布时间】:2012-12-13 17:02:34
【问题描述】:
我该如何解决这个问题??
输入: count_atoms(T,Count)
输出 计数原子(a(b,c(d,e),f),计数)。 计数 = 4 ;
我真的不知道...请你帮帮我吗??
【问题讨论】:
我该如何解决这个问题??
输入: count_atoms(T,Count)
输出 计数原子(a(b,c(d,e),f),计数)。 计数 = 4 ;
我真的不知道...请你帮帮我吗??
【问题讨论】:
也许基于堆栈的方法会有所帮助。您可以编写至少四个辅助谓词,如下所示:
% 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 谓词和一个来停止算法并产生结果。
【讨论】: