所以我正在编写这个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;
}
答案 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时)。