乘法方法不起作用

时间:2017-12-16 04:20:45

标签: java

我是编程新手并且正在阅读此代码。

它应该乘以最低数字和最高显示 结果,但结果总是不正确

例如,如果我将最低整数输入为1,将最高整数输入为10,则输出为{{1}而不是362880010)。

1 * 10

1 个答案:

答案 0 :(得分:1)

说明

问题是你的循环,我们来看看它:

int product = 1;
for (int count = highest ; count >= lowest ; count--) {
    product = product * count;
}

假设highest = 10lowest = 7

然后,您的计数器以10开头,您计算

product = 1 * 10 = 10

之后循环继续减少计数器count--,它现在是9,你将最后一个结果乘以,产生

product = 10 * 9 = 90

重复,计数器在下一次迭代中为8,产生

product = 90 * 8 = 720

在最后一次迭代中,它是7,产生最终结果

product = 720 * 7 = 5040

循环现在结束,因为在下一次迭代中count将是6,但您的条件是

count >= lowest
    6 >= 7      // false, aborting

解决方案

我不确定为什么你写了这么复杂的代码,但这里有两个变种

// Easiest and most efficient
int product = highest * lowest;

// Repeatedly adding highest lowest-times
int product = 0;
for (int i = 0; i < lowest; i++) {
    product += highest;
}

对于第二个版本,请查看上面的示例(highest = 10lowest = 7):

  10 * 7 = 70
= 10 + 10 + 10 + 10 + 10 + 10 + 10 // Adding 10 7-times

请注意,乘法是可交换,顺序无关紧要:

  highest * lowest
=  lowest * highest

因此无需区分 highestlowest