【发布时间】:2012-12-14 08:32:55
【问题描述】:
您好,我有一个电话号码列表(436,L)。
如何反转列表并使其尾递归?
list_of_digits(0,[]).
list_of_digits(M, [Z|Zx]) :- M > 0 ,
MM is floor(M / 10),
Z is M mod 10,
list_of_digits(MM,Zx).
谁能帮帮我吗?
我想将我的号码(在本例中为 436)转换为 像 [4,3,6] 这样的列表。
I call ?- list_of_digits(436,L)
and get
L = [6,3,4] ;
false.
back.
【问题讨论】:
-
@Boris 我想将数字 436 转换为一个列表,在我的示例中,我的列表顺序错误,而不是尾递归,你能解释一下,我怎样才能让它尾递归??
-
恕我直言,它已经是尾递归了
-
@CapelliC 哦,我只试过。完美,我怎样才能扭转我的名单??
-
@Boris 对不起,我的错,在我的示例中,我得到 [6,3,4] 而不是 [4,3,6],我知道如何反转列表,但我无法合并它。有什么建议吗??我编辑了它。
-
我已经解决了,谢谢。
标签: recursion prolog logic tail