2

我是 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 个术语。怎么做才能充分展示?

4

3 回答 3

3

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

于 2013-07-21T11:31:03.967 回答
2

请注意[|...]显示列表末尾的 。这意味着为了漂亮的打印目的,Erlang shell 会在一定长度后将其截断。

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

于 2013-07-20T18:21:00.100 回答
0

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

于 2016-01-19T21:54:53.867 回答