I'm in the process of learning Scala, and started working through a series of coding puzzles that I've done previously in other languages. For example, this solution, coded in Erlang: > sum_multiples(Max, Max, Acc) -> io:format("The sum of all the multiples of 3 or 5 below ~p: ~p~n", [Max, Acc]); > sum_multiples(Current, Max, Acc) when (Current rem 3 == 0) or (Current rem 5 == 0) -> sum_multiples(Current + 1, Max, Current + Acc); > sum_multiples(Current, Max, Acc) -> sum_multiples(Current + 1, Max, Acc). Now, doing this same problem in Scala, I wrote this: val max = 1000 println(s"The sum of all the multiples of 3 or 5 below ${max}: " + sum_multiples_recursive(1, max, 0)) def sum_multiples_recursive(current: Int, max: Int, acc: Int): Int = { if(current < max){ if(current % 3 == 0 || current % 5 == 0){ sum_multiples_recursive(current + 1, max, current + acc) } else { sum_multiples_recursive(current + 1, max, acc) } } else { acc } } I'd like to see what an experienced Scala coder might write, what Scala idioms might come into play.