Add recursive approach from the elixir-book

This commit is contained in:
Nathan Mattes 2021-11-22 20:50:03 +01:00
parent b6139625c9
commit c91dc3b94e
1 changed files with 22 additions and 1 deletions

View File

@ -5,7 +5,7 @@ defmodule FizzBuzz do
|> Enum.map(&FizzBuzz.check/1)
end
def check(number) do
def check(number) when number > 0 do
cond do
rem(number, 5) == 0 and rem(number, 3) == 0 ->
"Fizzbuzz!"
@ -18,3 +18,24 @@ defmodule FizzBuzz do
end
end
end
defmodule RecursiveFizzBuzz do
def upto(n) when n > 0, do: _upto(1, n, [])
defp _upto(_current, 0, result), do: Enum.reverse result
defp _upto(current, left, result) do
next_answer =
cond do
rem(current, 3) == 0 and rem(current, 5) == 0 ->
"Fizzbuzz!"
rem(current, 3) == 0 ->
"Fizz"
rem(current, 5) == 0 ->
"Buzz"
true ->
current
end
_upto(current+1, left-1, [next_answer | result] )
end
end