很明显,如果您需要数数,请数数。如果您需要倒数,请倒数。但是,在其他条件相同的情况下,一个比另一个要快吗? 这是我的一个著名难题的Scala代码-检查数字是否可被13整除。 在第一个示例中,我反转数组并在随后的for循环中向上计数。在第二个示例中,我不理会数组,并进行递减的for循环。从表面上看,第二个示例看起来更快。不幸的是,在我运行代码的网站上,它总是超时。
// works every time
object Thirteen {
import scala.annotation.tailrec
@tailrec
def thirt(n: Long): Long = {
val getNum = (n: Int) => Array(1, 10, 9, 12, 3, 4)(n % 6)
val ni = n.toString.split("").reverse.map(_.toInt)
var s: Long = 0
for (i <- 0 to ni.length-1) {
s += ni(i) * getNum(i)
}
if (s == n) s else thirt(s)
}
}
// times out every time
object Thirteen {
import scala.annotation.tailrec
@tailrec
def thirt(n: Long): Long = {
val getNum = (n: Int) => Array(1, 10, 9, 12, 3, 4)(n % 6)
val ni = n.toString.split("").map(_.toInt)
var s: Long = 0
for (i <- ni.length-1 to 0 by -1) {
s = s + ni(i) * getNum(i)
}
if (s == n) s else thirt(s)
}
}
我问以下问题:
虽然我看到了类似的问题,但找不到确切的答案。
答案 0 :(得分:1)
这就是我想解决的方式。
<asp:button ID="RegisterButton" runat="server" Text="הירשם" class="RegisterStyle" onclientclick="var isValid = checkform(); return isValid;" onclick="RegisterButton_Click1" />