【发布时间】:2013-12-31 19:38:45
【问题描述】:
我刚刚发布了一个关于我的 LCM 课程的问题,并且我更改了我的代码,但它仍然不起作用。 我插入 (10,4) 所以程序应该打印出 20 但它只打印出 0。也许初始化有问题?我将“int multiple”更改为几个不同的值,该方法打印出初始化为“multiple”的值。 这是我的固定代码。谢谢。
public class LCM {
public static int calcLCM(int num1, int num2){ //num1=10, num2=4; their LCM is 20
//num1 has to be greator than num2
int multiple=0;
for(int i=1;i<=num1;i++)
{
if(num2==num1)
{
multiple=num2;
}
else if(num2*i>num1)
{
i++;
num1=num1*i;
}
else if(num2*i<num1){
i++;
num2=num2*i;
}
}
return multiple;
}
}
【问题讨论】:
-
你的previous question 和这个建议你需要先拿起一个编程参考;在开始编写代码之前花点时间阅读。
-
那么循环不起作用怎么办?它应该可以很好地迭代(尽管您会遇到跳过值的情况,如果
num2 * i < num1,这可能经常发生)。 -
我认为你的算法有问题。我看不清楚你想从你的代码中使用什么算法。
-
我没有看到循环有任何问题。循环内的逻辑一定有缺陷
-
在您的逻辑中,当输入为 10、4 时,num2 永远不会等于 num1。因此,multiple 不会获得新值。所以它打印 0。试着找出逻辑来获得 LCM