我的代码有点问题:
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)。 我不知道为什么......:/ 如果有人可以帮助或解释我犯错误的地方会很棒。 我将不胜感激。
答案 0 :(得分: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 :(得分:0)
1)如果条件允许,你必须添加括号。 2)最后如果条件应该替换为else条件。
检查以下代码:
nameSplit
答案 2 :(得分:0)
如果您正在编写GCD算法
1)它不应该那么复杂
2)它应该是递归的。你无法一步计算gcd。
假设a和b是非负的,它可以是一个简单的
int gcd(int a, int b) {
if(b==0) {
return a;
}
return gcd(b, a % b);
}