如何修复getGCF递归程序?

时间:2016-01-29 00:32:54

标签: java

所以我正在编写这个getGCF程序,它使用Euclid的步骤来查找两个数字的GCF,并且我使用递归来尝试使其工作,但由于某种原因,即使在获得正确的GCF时也会返回1。我不确定如何解决这个问题,但任何帮助都会受到赞赏。

以下是代码:

public static int getGCF(int num1, int num2){

    int gcf=1;
    int remainder = num1%num2;

    if(remainder == 0){
       gcf = num2;

    }
    else{
        num1 = num2;
        num2 = remainder;
        getGCF(num1,num2);
    }

    return gcf;
}

1 个答案:

答案 0 :(得分:0)

您的问题是,即使它计算了正确的值,您的else子句也不会修改gcf int。以下是修复您的问题的精简代码。通过返回if / else语句本身,您无需使用gcf变量。

public static int getGCF(int num1, int num2) {
    int remainder = num1 % num2;

    if(remainder == 0) {
       return num2;
    } else {
        return getGCF(num2, remainder);
    }
}

虽然可能没有相关性,但是没有任何价值,因为有些边缘情况不会处理(例如当num2为0时)。