【发布时间】:2011-02-09 05:39:34
【问题描述】:
我正在尝试了解一些基本的 erlang 功能,我可以在下面使用一些 cmets。
我有以下 erlang 代码,它接受一个元组列表,如果找到一个键,则返回一个减去一个元素的列表:
delete(Key, Database) ->
remove(Database, Key, []).
remove([], Key, Acc) ->
Acc;
remove([H|T], Key, Acc) ->
if
element(1, H) /= Key ->
[H| remove(T, Key, Acc)];
true ->
remove(T, Key, Acc)
end.
这是一个好方法吗?
if 语句似乎不正确。
也是我使用累加器 Acc 使这个尾递归吗?
【问题讨论】:
-
如果你想知道某个东西是否是尾递归的,想想是否有什么东西需要调用的返回值才能让函数返回。在这种情况下,cons 正在等待结果,所以不,它不是尾递归。
-
这是对我在这里为您回答的问题的改写:stackoverflow.com/questions/2658631/tail-recursion-in-erlang/…
-
@Jeremy 这不是一个完整的改写,因为我正在寻找有关 if 语句的指导,但我明白这一点,不会再发布关于该主题的帖子。
标签: erlang