Por que Scala requer um tipo de retorno para funções recursivas?

No trecho de código incluído abaixo, eu tenho uma chamada de função recursiva, usada para facilitar uma nova tentativa se uma chamada de rede falhar (o Amazon SimpleDB retornará ocasionalmente um 503 e exigirá nova tentativa).

Quando tento compilar, o Scala reclamarecursive method simpledb_update needs result type.

// sends data to SimpleDB. Retries if necessary
def simpledb_update(name: String, metadata: Map[String,String], attempt: Int) = {
 try {
  db(config("simpledb_db")) += (name, metadata)
 } catch {
  case e =>
   // if it fails, try again up to 5 times
  if(attempt < 6)
  {
   Thread.sleep(500)
   simpledb_update(name, metadata, attempt + 1)
   } else
     AUlog(name + ": SimpleDB Failed")
   }
 }

Por que isso é necessário em funções recursivas? Meu pensamento é apenas retornar um booleano verdadeiro / falso para satisfazer o compilador ... o seguinte compila bem.

// sends data to SimpleDB. Retries if necessary
 def simpledb_update(name: String, metadata: Map[String,String], attempt: Int): Boolean = {
 try {
  db(config("simpledb_db")) += (name, metadata)
  true
 } catch {
  case e =>
   // if it fails, try again up to 5 times
   if(attempt < 6)
   {
    Thread.sleep(500)
    simpledb_update(name, metadata, attempt + 1)
   } else
    AUlog(name + ": SimpleDB Failed")
    false
  }
}

questionAnswers(2)

yourAnswerToTheQuestion