Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
23
Task/Catalan-numbers/Elixir/catalan-numbers.elixir
Normal file
23
Task/Catalan-numbers/Elixir/catalan-numbers.elixir
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
defmodule Catalan do
|
||||
def cat(n), do: div( factorial(2*n), factorial(n+1) * factorial(n) )
|
||||
|
||||
defp factorial(n), do: fac1(n,1)
|
||||
|
||||
defp fac1(0, acc), do: acc
|
||||
defp fac1(n, acc), do: fac1(n-1, n*acc)
|
||||
|
||||
def cat_r1(0), do: 1
|
||||
def cat_r1(n), do: Enum.sum(for i <- 0..n-1, do: cat_r1(i) * cat_r1(n-1-i))
|
||||
|
||||
def cat_r2(0), do: 1
|
||||
def cat_r2(n), do: div(cat_r2(n-1) * 2 * (2*n - 1), n + 1)
|
||||
|
||||
def test do
|
||||
range = 0..14
|
||||
:io.format "Directly:~n~p~n", [(for n <- range, do: cat(n))]
|
||||
:io.format "1st recusive method:~n~p~n", [(for n <- range, do: cat_r1(n))]
|
||||
:io.format "2nd recusive method:~n~p~n", [(for n <- range, do: cat_r2(n))]
|
||||
end
|
||||
end
|
||||
|
||||
Catalan.test
|
||||
Loading…
Add table
Add a link
Reference in a new issue