如何打破循环?
var largest=0
for(i<-999 to 1 by -1) {
for (j<-i to 1 by -1) {
val product=i*j
if (largest>product)
// I want to break out here
else
if(product.toString.equals(product.toString.reverse))
largest=largest max product
}
}
如何将嵌套的循环转换为尾递归?
从FOSDEM 2009 上的Scala Talk http://www.slideshare.net/Odersky/fosdem-2009-1013261在第22页上:
中断并继续Scala没有它们。为什么?它们有点必要。更好地使用许多较小的函数发行如何与闭包进行交互。不需要它们!
有什么解释?
i
和来找到最大的“回文”产品j
。如果此代码在不中断循环的情况下运行完毕,则结果是,906609
但通过尽早中断循环,结果就是90909
中断循环不会使代码“更有效”,因为它会改变结果。