Erlang递归
Erlang是一种函数式编程语言,需要记住的是所有函数式编程语言,它们不提供任何循环结构。 相反,函数式编程依赖于一种称为递归的概念。
编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数
递归demo1
测试递归和性能
tets(N) ->
Result = sum(N),
io:format("~p~n", [Result]),
erlang:process_info(self()).
sum(1) ->
1;
sum(N) ->
N + sum(N - 1).
结果:
(gs_framework@192.168.77.41)5> lib_test:tets(100000000).
5000000050000000
[{current_function,{lib_test,tets,1}},
{initial_call,{erlang,apply,2}},
{status,running},
{message_queue_len,0},
{messages,[]},
{links,[<0.55.0>]},
{dictionary,[]},
{trap_exit,false},
{error_handler,error_handler},
{priority,normal},
{group_leader,<0.54.0>},
{total_heap_size,237289198},
{heap_size,237288211},
{stack_size,25},
{reductions,99951263},
{garbage_collection,[{max_heap_size,#{error_logger