我正在尝试编写代码,找到两个数字的GCF而不使用递归(我的老师希望它使用for循环)。我的代码现在似乎没有工作,我想知道是否有人能发现逻辑错误。
public class Test
{
public static void main(String[] args)
{
System.out.print(findGCF(2, 12));
}
public static int findGCF(int a, int b)
{
int holderGCF = 0;
int greatestItCanBe = 0;
if(a > b)
{
greatestItCanBe = b;
}
else
{
greatestItCanBe = a;
}
for(int i = greatestItCanBe; i > 0; i--)
{
if((a % i == 0) && (b % i == 0))
{
holderGCF = i;
if(i > holderGCF)
{
holderGCF = i;
}
}
}
return holderGCF;
}
}
答案 0 :(得分:0)
这是问题
holderGCF = i;
if (i > holderGCF) {
holderGCF = i;
}
在上面,因为分配后的第一行holderGCF
和i
具有相同的值,而您的条件i > holderGCF
始终为false。
删除此作业。
holderGCF = i;