19 lines
338 B
Elixir
19 lines
338 B
Elixir
% A tail call optimized fibonacci.
|
|
module Math
|
|
def fibonacci(n)
|
|
fibonacci(n, 1, 0)
|
|
end
|
|
|
|
def fibonacci(0, _, result)
|
|
result
|
|
end
|
|
|
|
def fibonacci(n, next, result)
|
|
fibonacci(n - 1, next + result, next)
|
|
end
|
|
end
|
|
|
|
Math.fibonacci(0) % => 0
|
|
Math.fibonacci(1) % => 1
|
|
Math.fibonacci(3) % => 2
|
|
Math.fibonacci(10) % => 55 |