Mi chiedevo se esiste un modo migliore per scrivere loop ricorsivi in scala.Come fare loop ricorsivi in scala
def fib(n: Int) = {
def loop(a: BigInt = 0, b: BigInt = 1, n: Int = n): BigInt = {
if(n==0) a
else loop(b, a+b, n-1)
}
loop()
}
Potrei scrivere in questo modo
def fib(n: Int, a: BigInt = 0, b: BigInt = 1): BigInt = {
if(n==0) a
else fib(n-1, b, a+b)
}
ma poi A e B sarebbe esposto e non incapsulato all'interno del metodo più.
Questo è praticamente come è stato fatto (il primo esempio). Il 'def' interno garantisce anche che sia privato e possa essere ottimizzato per le code di coda. – huynhjl
Anche la seconda versione è a coda ricorsiva. Ho chiesto la possibilità di aggiungere un modo per rendere questi parametri privati della mailing list della lingua di Scala in agosto e sono stati accolti da un silenzio assordante/mancanza di interesse. http://www.scala-lang.org/node/10736 –
Risposta breve: No. –