From 687d3fece69684321fee76699c1d660bccb4cde4 Mon Sep 17 00:00:00 2001 From: Evgeny Garlukovich Date: Sun, 4 Feb 2018 19:02:52 +0300 Subject: [PATCH] Add Elixir examples for recursion --- 03_recursion/elixir/01_countdown.exs | 12 ++++++++++++ 03_recursion/elixir/02_greet.exs | 18 ++++++++++++++++++ 03_recursion/elixir/03_factorial.exs | 6 ++++++ 3 files changed, 36 insertions(+) create mode 100644 03_recursion/elixir/01_countdown.exs create mode 100644 03_recursion/elixir/02_greet.exs create mode 100644 03_recursion/elixir/03_factorial.exs diff --git a/03_recursion/elixir/01_countdown.exs b/03_recursion/elixir/01_countdown.exs new file mode 100644 index 0000000..a5f68ba --- /dev/null +++ b/03_recursion/elixir/01_countdown.exs @@ -0,0 +1,12 @@ +defmodule Countdown do + defguardp non_positive?(x) when x <= 0 + + def from(i) when non_positive?(i), do: nil + + def from(i) do + IO.puts(i) + from(i - 1) + end +end + +Countdown.from(5) diff --git a/03_recursion/elixir/02_greet.exs b/03_recursion/elixir/02_greet.exs new file mode 100644 index 0000000..3c15435 --- /dev/null +++ b/03_recursion/elixir/02_greet.exs @@ -0,0 +1,18 @@ +defmodule Greeting do + def greet2(name) do + IO.puts("how are you, #{name}?") + end + + def bye do + IO.puts("ok bye!") + end + + def greet(name) do + IO.puts("hello, #{name}!") + greet2(name) + IO.puts("getting ready to say bye...") + bye() + end +end + +Greeting.greet("adit") diff --git a/03_recursion/elixir/03_factorial.exs b/03_recursion/elixir/03_factorial.exs new file mode 100644 index 0000000..080c05f --- /dev/null +++ b/03_recursion/elixir/03_factorial.exs @@ -0,0 +1,6 @@ +defmodule Factorial do + def of(1), do: 1 + def of(n), do: n * of(n - 1) +end + +IO.puts(Factorial.of(5))