【发布时间】:2014-04-05 00:09:42
【问题描述】:
嗨,有人可以分解这个递归代码,这样我就可以完全理解它给出的输出。我真的很困惑它的工作原理:
listcomb([],[]).
listcomb([X|Y], [X|Z]) :-
listcomb(Y,Z).
listcomb([_|Y],Z) :-
listcomb(Y,Z).
?- listcomb([1,2,3], X).
X = [1, 2, 3] ;
X = [1, 2] ;
X = [1, 3] ;
X = [1] ;
X = [2, 3] ;
X = [2] ;
X = [3] ;
X = [].
谢谢
【问题讨论】:
-
你试过
trace看看会发生什么吗? -
trace 只返回一堆中文 sumbols,认为它坏了哈
-
你使用的是什么 Prolog 解释器?