我是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) ].
答案 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]