Sup*_*ock 5 erlang reverse list
来自Cesarini的"Erlang编程"练习3-2
当我通过"Erlang编程"时,我得到了奇怪的列表创建问题.从练习3-2开始,我写了两个类似的功能.
create( 0 ) -> [];
create( N ) when N > 0 -> [ N | create( N-1 ) ].
reverse_create( 0 ) -> [];
reverse_create( N ) when N > 0 -> [ reverse_create( N-1 ) | N ].
Run Code Online (Sandbox Code Playgroud)
所以create(3)就像我期望的那样生成.
exercise3:创建(3).
[3,2,1]
但是reverse_create不会生成我期望的列表.
exercise3:reverse_create(3).
[[[[] | 1] | 2] | 3]
我需要更改什么才能使reverse_create(3)返回[1,2,3]?谢谢你的解释.
reverse_create返回一个列表,并使用它作为head元素来创建导致嵌套列表的列表.尝试此解决方案:
reverse_create( 0 ) -> [];
reverse_create( N ) when N > 0 -> reverse_create( N-1 ) ++ [N].
Run Code Online (Sandbox Code Playgroud)
编辑:一个更好的实现将是:
reverse_create2(N) -> reverse_create_helper(N, []).
reverse_create_helper(0, Acc) ->
Acc;
reverse_create_helper(N, Acc) ->
reverse_create_helper(N-1, [N|Acc]).
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4800 次 |
| 最近记录: |