Add recursive approach from the elixir-book
This commit is contained in:
parent
b6139625c9
commit
c91dc3b94e
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue