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


    

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: