defmodule Recursive do
# sum
def sum(list) do
sum(list, 0)
end
def sum([], acc) do
acc
end
def sum([head | tail], acc) do
sum(tail, acc + head)
end
# product
def product(list) do
product(list, 1)
end
def product([], acc) do
acc
end
def product([head | tail], acc) do
product(tail, acc * head)
end
# factorial
def factorial(n) do
factorial(n, 1)
end
def factorial(0, acc) do
acc
end
def factorial(n, acc) do
factorial(n-1, acc * n)
end
# fibonacci
def fibonacci(n) do
fibonacci(n, 0, 1)
end
def fibonacci(0, a, _) do
a
end
def fibonacci(n, a, b) do
fibonacci(n-1, b, a + b)
end
end
ns = [1,2,3,4,5]
IO.puts Recursive.sum(ns)
IO.puts Recursive.product(ns)
IO.puts Recursive.factorial(5)
0..5 |> Enum.map(fn x -> Recursive.factorial(x) end) |> IO.inspect
0..5 |> Enum.map(fn x -> Recursive.fibonacci(x) end) |> IO.inspect
To embed this project on your website, copy the following code and paste it into your website's HTML: