Me preguntaba si hay una mejor manera de escribir bucles recursivos en scala.Cómo hacer bucles recursivos en 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()
}
podría escribir como este
def fib(n: Int, a: BigInt = 0, b: BigInt = 1): BigInt = {
if(n==0) a
else fib(n-1, b, a+b)
}
pero entonces ayb estaría expuesto y no encapsulado dentro del método más.
Así es como se hace (el primer ejemplo). El 'def 'interno también asegura que es privado y puede optimizarse para cañas de cola. – huynhjl
La segunda versión es recursiva de cola también. Le pregunté sobre la posibilidad de agregar alguna forma de hacer que estos parámetros fueran privados de la lista de correo de Scala Language en agosto y se encontró con un silencio ensordecedor/falta de interés. http://www.scala-lang.org/node/10736 –
Respuesta corta: No. –