Java中的GCD \ GCF \ HCF

时间:2016-06-12 08:42:59

标签: 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;
}

第一个if案例完美无缺!但是如果其他两个案例没有成功(他们总是返回0)。 我不知道为什么......:/ 如果有人可以帮助或解释我犯错误的地方会很棒。 我将不胜感激。

3 个答案:

答案 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);
}