我写了一个小的Prolog程序,应该检查一个列表,看看头部Ha
是否大于K
,如果是,应该将它附加到列表R
并检查完整列表后返回R
然后它将由大于K
的整数组成。如何返回Prolog中的特定列表?
此代码返回R = []
。
teilliste_grK([],_,_).
teilliste_grK([Ha|Ta], K, R) :-
Ha =< K,
teilliste_grK(Ta,K,R).
teilliste_grK([Ha|Ta], K, R) :-
Ha > K,
append(R, [Ha], C),
teilliste_grK(Ta, K, C).
任何帮助?
我试过'追加(R,哈,R)'这是我想要的但它不会工作。问题是我对Prolog很陌生,来自Java,这是非常不同的。最后一次调用'X'应该是通过递归调用附加的整个列表。 –
好吧,在执行'append([Ha],C,R)后,'它有点不错,但是在R-list上给了我一个空尾,这可能是我的base调用的情况,我会试着去追踪它。但我没有得到追加顺序,我认为第一个参数是我追加第二个参数并将其保存在最后一个参数中的列表。 –
得到了我想要的结果:'teilliste_grK([],_,R): - append([],R).'虽然更多的是通过尝试和错误,然后技能。没有追加的简单方法是什么? –