Tak teď jsem se k tomu náhodou dostal a rád bych se opravil. Vím, že reaguji na už celkem starou diskusi, ale třeba na to někdo taky narazí...
Scala optimalizaci posledního volání umí, ale jsou tam určitá omezení (např. musí jít o přímou rekurzi). Ale je tu i dobrá zpráva pro ty, co si nejsou jisti, zda je jejich kód optimalizován: je možné říct kompilátoru, že to musí takto optimalizovat (nepodaří-li se, selže kompilace): http://www.scala-lang.org/api/current/scala/annotation/tailrec.html

