16 lines
350 B
Erlang
16 lines
350 B
Erlang
-module( anonymous_recursion ).
|
|
-export( [fib/1, fib_internal/1] ).
|
|
|
|
fib( N ) when N >= 0 ->
|
|
fib( N, 1, 0 ).
|
|
|
|
fib_internal( N ) when N >= 0 ->
|
|
Fun = fun (_F, 0, _Next, Acc ) -> Acc;
|
|
(F, N, Next, Acc) -> F( F, N - 1, Acc+Next, Next )
|
|
end,
|
|
Fun( Fun, N, 1, 0 ).
|
|
|
|
|
|
fib( 0, _Next, Acc ) -> Acc;
|
|
fib( N, Next, Acc ) -> fib( N - 1, Acc+Next, Next ).
|