A Scala recursion tutorial