Erlang 为什么我有一个';内存分配错误';使用以下代码?

Erlang 为什么我有一个';内存分配错误';使用以下代码?,erlang,heap,memory-management,Erlang,Heap,Memory Management,我编写了以下代码来处理舍入错误。如果我用大于7的值调用loopUp,我会得到一个内存分配错误,我不知道如何修复它。我在Windows7上尝试了32/64位Erlang。任何帮助都将不胜感激 -module(roundOff). -export([main/0]). main() -> loopUp(10). loopUp(1) -> 1; loopUp(I) -> io:fwrite("~f ", [math:pow(10.0, I)]), sum

我编写了以下代码来处理舍入错误。如果我用大于7的值调用loopUp,我会得到一个内存分配错误,我不知道如何修复它。我在Windows7上尝试了32/64位Erlang。任何帮助都将不胜感激

-module(roundOff).
-export([main/0]).

main() ->
    loopUp(10).

loopUp(1) -> 1;
loopUp(I) -> 
    io:fwrite("~f ", [math:pow(10.0, I)]),
    sumUp(seq_float(1.0, math:pow(10, I), 1.0)),
    loopUp(I-1).

sumUp(L) ->
    sumUp(L, 0).

sumUp([], Acc) ->
    io:fwrite("~.20f~n", [Acc]),
    Acc;

sumUp([H|T], Acc) ->
    sumUp(T, Acc+1.0/H).

seq_float(Min, Max, Inc, Counter, Acc) when (Counter*Inc + Min) >= Max -> 
    lists:reverse([Max|Acc]);

seq_float(Min, Max, Inc, Counter, Acc) -> 
    seq_float(Min, Max, Inc, Counter+1, [Inc * Counter + Min|Acc]).

seq_float(Min, Max, Inc) -> 
    seq_float(Min, Max, Inc, 0, []).

您在seq_float中生成的列表太长。与其预先生成所有的数字,不如根据需要计算每个数字