Tôi đã tự hỏi nếu có một cách tốt hơn để viết các vòng đệ quy trong scala.Làm thế nào để làm các vòng đệ quy trong 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()
}
tôi có thể viết nó như thế này
def fib(n: Int, a: BigInt = 0, b: BigInt = 1): BigInt = {
if(n==0) a
else fib(n-1, b, a+b)
}
nhưng sau đó a và b sẽ được tiếp xúc và không được đóng gói bên trong phương pháp này nữa.
Đó là cách thực hiện khá nhiều (ví dụ đầu tiên). 'Def' bên trong cũng đảm bảo nó là riêng tư và có thể được tối ưu hóa cho đuôi đuôi. – huynhjl
Phiên bản thứ hai là đệ quy đuôi quá. Tôi hỏi về khả năng thêm một số cách để làm cho các thông số này riêng tư trong danh sách gửi thư của Scala Language vào tháng 8 và đã gặp phải một sự im lặng điếc/thiếu sự quan tâm. http://www.scala-lang.org/node/10736 –
Câu trả lời ngắn gọn: Không. –