我写了一个检查数字是否为质数的方法:
static boolean isPrime(int x) {
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}
在我们正在学习的一系列练习中,解决方案是:
static boolean isPrime(int x) {
boolean hasDivisors = false;
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0) {
hasDivisors = true;
break;
}
}
return !hasDivisors;
}
在我的例子中,如果我找到一个除数,我会返回该数字不是素数(return false
),这将取代 break
秒方法。唯一其他明显的原因是第二种方法仅使用单个 return
语句。
这有什么原因吗(速度/内存方面)?
最佳答案
主要是风格问题。一些编码约定规定一个方法只有一个 return
语句。这在您必须显式释放资源的语言中很有意义,但在 Java 中没有任何功能影响。
就我个人而言,我更喜欢在您知道结果后立即返回
(就像在第一个代码段中那样),但同样,这是个人风格的问题。
关于java - 这两种检查数字是否为质数的方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290577/