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

2

[|...]表示されたリストの最後にある に注意してください。これは、きれいに印刷するために、Erlang シェルによってある程度の長さの後に切り捨てられることを意味します。

リスト全体を強制的に印刷する 1 つの方法は、 を呼び出すことio:format("~p~n", [create_list(30)])です。

于 2013-07-20T18:21:00.100 に答える