Skip to content

Instantly share code, notes, and snippets.

@frobs
Created September 10, 2023 15:31
Show Gist options
  • Save frobs/94bc96438deb036888d0bfc3d31d7423 to your computer and use it in GitHub Desktop.
Save frobs/94bc96438deb036888d0bfc3d31d7423 to your computer and use it in GitHub Desktop.
Fizzbuzz with recursion
defmodule FizzBuzz do
@first_number 1
def fizzbuzz(n) do
do_fizzbuzz([], @first_number, n)
end
def do_fizzbuzz(acc, current_number, limit) when current_number > limit, do: Enum.reverse(acc)
def do_fizzbuzz(acc, current_number, limit) do
do_fizzbuzz([get_value(current_number) | acc], current_number + 1, limit)
end
def get_value(current_number) when rem(current_number, 3) == 0 and rem(current_number, 5) == 0, do:
"FizzBuzz"
def get_value(current_number) when rem(current_number, 5) == 0, do:
"Buzz"
def get_value(current_number) when rem(current_number, 3) == 0, do:
"Fizz"
def get_value(current_number), do:
current_number
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment