When you define a recursive function you must specify the type of the returned value. If you don’t do it the compilation fails.
object Program
{
def main(args: Array[String]):Unit =
{
println(factorial(4))
}
def factorial(num:Int):Int = if (num==0) 1 else num*factorial(num-1)
}
The following video clip explains that.







