我正在编写一个函数,它给了我最大的因子,它是一个数字的质数。例如,数字 12 会给我 3。我的初始代码是:
public static int getLargestPrime(int number) {
if (number < 2) {
return -1;
}
for (int num = 2; num <= number; num++) {
int mod = number % num;
if (mod == 0) {
int div = number / num;
if (div == 1) {
return number;
} else {
number = div;
num = 1;
}
}
}
}
但是我不断收到缺少返回语句的错误,所以我添加了一个:
public static int getLargestPrime(int number) {
if (number < 2) {
return -1;
}
for (int num = 2; num <= number; num++) {
int mod = number % num;
if (mod == 0) {
int div = number / num;
if (div == 1) {
return number;
} else {
number = div;
num = 1;
}
}
}
return number;
}
现在它是正确的,但我不太明白它背后的逻辑。我已经读到在某些情况下循环不会执行,因此即使我的循环没有执行,我也需要返回一些东西,但是我想不出我的循环不会执行的任何情况。从字面上看,任何 2 或以上的东西都会触发循环,而任何小于 2 的东西都将返回 -1。所以我的问题是在什么情况下循环不会执行?而且,for循环之后的return语句并没有真正的意义,有没有更好的方法来解决缺少的return语句?
慕森王
陪伴而非守候
翻翻过去那场雪
达令说
相关分类