Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的GCD\GCF\HCF_Java_Greatest Common Divisor - Fatal编程技术网

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=…
语句实际上不属于这种情况。如果你想把它们包括进来,可以用大括号把语句分组。你能给出一些示例输入和预期输出吗?