prolog中的递归 - 基本情况下的错误

时间:2013-03-30 21:02:57

标签: prolog

我正在尝试编写谓词范围\ 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]),!

所以,如果有人知道问题是什么,请帮帮我

1 个答案:

答案 0 :(得分:0)

你正在以“错误”的意义构建列表。考虑到当你调用基本案例时,它将收到consed列表。如何匹配单个元素列表?尝试改为

range(S,E,[S|L]):-
    S1 is S + 1,
    range(S1,E,L).