我在SWI-prolog中的列表上停留在此问题上。 在Prolog中,变量只能写入一次,因此我无法处理此问题。
check(Parameter, [H | T], Result) :-
get_res(Parameter, H, Res),
check(Res, T, Result).
因此,谓词check / 3接受一个参数,一个列表,并给我最终结果。 get_res / 3给了我一个中间结果,用作check / 3递归情况的输入。 因此,在结果中,每个递归调用都必须具有Res。 我尝试在递归调用之前使用append([Parameter],[],Result),但第一次成功,然后由于无法重写Result而失败。 我知道我也需要一个基本情况,可能是check(_,[],[])。 但我什至不知道
答案 0 :(得分:0)
要递归将结果添加到输出中,可以将代码修改为:
check(_,[],[]).
check(Parameter, [H | T], [Res|Result]) :-
get_res(Parameter, H, Res),
check(Res, T, Result).
在这种情况下,基本大小对于具有正确的工作功能也很重要。调用check / 3时,请确保Result
的参数是变量s.t。这可以正常工作。