为什么这个最大公约数程序的输出如果递归调用应该停止并且当a或b变为0时返回为-1

时间:2017-01-14 07:52:16

标签: java recursion greatest-common-divisor

1.该方法采用两个参数来计算最大公约数。 2.而不是返回a或b的值,程序返回-1。

public static int gcd(int a,int b)
    {

        if(a==0 && b>0)
        {
            // returns when a becomes  0
            return b;
        }
        else if(b==0 && a>0)
        {
            //returns when b becomes 0
            return a;

        }
        else if(a>b)
         gcd(b,a%b);
        else 
            gcd(a,b%a);

        return -1;
    }

1 个答案:

答案 0 :(得分:1)

您还需要返回递归调用。所以无需返回-1

public static int gcd(int a, int b) {

    if (a == 0 && b > 0) {
        // returns when a becomes  0
        return b;
    } else if (b == 0 && a > 0) {
        //returns when b becomes 0
        return a;

    } else if (a > b) {
        return gcd(b, a % b);
    } else {
        return gcd(a, b % a);
    }
}