我正在尝试编写谓词范围\ 3,它接受三个参数,第一个是开始,第二个是结束,并在第三个参数中返回生成的列表。
E.g rang(1,5,L)。
L = [1, 2, 3, 4, 5]
我使用了这段代码
range(E,E,[E]).
range(S,E,L):-
S1 is S + 1,
range(S1,E,[S|L]).
但它不起作用,当我使用trace命令知道错误在哪里我认识到基本情况没用时,我也尝试了绿色切割!在基本情况下但它不起作用范围(E,E) ,[E]),!
所以,如果有人知道问题是什么,请帮帮我
答案 0 :(得分:0)
你正在以“错误”的意义构建列表。考虑到当你调用基本案例时,它将收到consed列表。如何匹配单个元素列表?尝试改为
range(S,E,[S|L]):-
S1 is S + 1,
range(S1,E,L).