Java中的GCD\GCF\HCF
我的代码有点问题:Java中的GCD\GCF\HCF,java,greatest-common-divisor,Java,Greatest Common Divisor,我的代码有点问题: public static int ggT(int a, int b) { int result = 0; if (a == b) result = a; else if ( a > b) a -= b; result = a % b; if (b > a) b -= a; result = a % b; return result; } 第一
public static int ggT(int a, int b) {
int result = 0;
if (a == b)
result = a;
else if ( a > b)
a -= b;
result = a % b;
if (b > a)
b -= a;
result = a % b;
return result;
}
第一个如果情况完美!但是其他两个if案例不起作用(结果总是返回0)。
我不知道为什么…:/
如果有人能帮助或解释我在哪里犯了错误,那就太好了。
如果有任何帮助,我将不胜感激。根据您的缩进,您似乎需要在语句周围加上一些括号
public static int ggT(int a, int b) {
int result = 0;
if (a == b) {
result = a;
} else if ( a > b) {
a -= b;
result = a % b;
}
if (b > a) {
b -= a;
result = a % b;
}
return result;
}
如果不使用括号,则只将“If”后面的第一行视为语句的一部分。始终执行“return”1)必须在If条件中添加括号。
2) Last if条件应替换为else if条件
检查以下代码:
public static int ggT(int a, int b) {
int result = 0;
if (a == b){
result = a;
} else if ( a > b){
a -= b;
} else if (b > a){
b -= a;
}
if(a > b) { //Check
result = b % a;
} else if(b > a){
result = a % b;
} else if(b == a){
result = a;
}
return result;
}
如果你在写GCD算法 1) 不应该那么复杂 2) 它应该是递归的。你不能一步计算一个gcd 假设a和b是非负的,它可以是一个简单的
int gcd(int a, int b) {
if(b==0) {
return a;
}
return gcd(b, a % b);
}
此外,还可以运行案例2和案例3。这难道不是一个“如果”吗?在每个cae中直接返回会更好。感谢您的努力。我添加了括号,但仍然得到错误的结果/结果总是返回0.:/还有其他的建议吗?会出什么问题=DUSE<代码> {<代码> >代码> } /Cuto,以分组指令。如果不使用<代码> { }……/>代码> < java >(也适用于其他循环的东西),java只考虑第一个语句在<代码> > < <代码> >属于<代码>如果情况。因此,您的
result=…
语句实际上不属于这种情况。如果你想把它们包括进来,可以用大括号把语句分组。你能给出一些示例输入和预期输出吗?