在列表中创建序列

时间:2013-11-28 20:43:11

标签: erlang

我是Erlang的新手,我对这个函数有一个问题,它返回一个倒计时的列表。例如[3,2,1]

如果将N-1更改为N-2,为什么不起作用?

我希望输出显示[7,5,3,1]

-module(create_list).
-export([create_list/1]).

create_list(0) ->
       [];

create_list(N) ->
    [ N | create_list(N - 1) ].

3 个答案:

答案 0 :(得分:4)

因为无论你从一个奇数中减去2多少次,你永远不会得到零?

我以前从未见过Erlang代码,但我怀疑修复是添加

create_list(1) ->
       [ 1 ];

答案 1 :(得分:2)

更安全地使用正面检查:

create_list(N) when N > 0 ->
   [N | create_list(N - 2)];
create_list(_) ->
   [].

答案 2 :(得分:0)

已经有了这样做的功能:

lists:seq(From, To, Incr) -> Seq
1> lists:seq(7,1,-2).
[7,5,3,1]