BIL*_*ILL 2 binary-tree prolog
我有一些代码
tree1(tree(1,
tree(2,
tree(3,nil,nil),
tree(4,nil,nil)),
tree(5,
tree(6,nil,nil),
tree(7,nil,nil))
)
).
rbt_count_nodes(e,0):-!.
rbt_count_nodes(t(_,L,R),N):-
rbt_count_nodes(L,NL),
rbt_count_nodes(R,NR),
N=NL+NR+1.
?-tree1(T),rbt_count_nodes(T,N),write(N).
Run Code Online (Sandbox Code Playgroud)
但目标总是回归号码为什么?
rbt_count_nodes(t(_,L,R),N)
Run Code Online (Sandbox Code Playgroud)
应该成为
rbt_count_nodes(tree(_,L,R),N)
Run Code Online (Sandbox Code Playgroud)
和
N=NL+NR+1
Run Code Online (Sandbox Code Playgroud)
应该成为
N is NL + NR + 1
Run Code Online (Sandbox Code Playgroud)
((=)/2
用于执行统一,(is)/2
执行算术).
和
rbt_count_nodes(e,0):-!.
Run Code Online (Sandbox Code Playgroud)
应该成为
rbt_count_nodes(nil,0).
Run Code Online (Sandbox Code Playgroud)
在这三次编辑之后它应该没问题,虽然我无法测试,所以我可能被证明是错的.