Erlang:列表展平

时间:2013-07-20 17:59:39

标签: erlang

我是Erlang的新手,我正在尝试编写一些函数,该函数将返回给定N -> 2, 4, .... 2^N作为列表的以下几何级数。 我写了一些代码:

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

create_list(1) -> [2];
create_list(N) when N>1 ->
  lists:flatten([create_list(N-1)]++[trunc(math:pow(2, N))]).

它可以正常工作到29,但是在我通过30以后它会返回相同的结果: [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768, 65536,131072,262144,524288,1048576,2097152,4194304,8388608, 16777216,33554432,67108864,134217728,268435456,536870912|...]

即只有前29个学期。怎么做才能完全显示?

3 个答案:

答案 0 :(得分:3)

您可以强制shell使用rp(create_list(30))打印整个结果。

答案 1 :(得分:2)

请注意显示列表末尾的[|...]。这意味着它只是在一段时间后被Erlang shell截断,以实现漂亮的打印目的。

强制打印整个列表的一种方法是调用io:format("~p~n", [create_list(30)])

答案 2 :(得分:0)

或者如果您需要打印unicode字符串,请尝试io:format("〜ts~n",[YourData])。