我是编程新手并且正在阅读此代码。
它应该乘以最低数字和最高显示 结果,但结果总是不正确
例如,如果我将最低整数输入为1
,将最高整数输入为10
,则输出为{{1}而不是3628800
(10
)。
1 * 10
答案 0 :(得分:1)
问题是你的循环,我们来看看它:
int product = 1;
for (int count = highest ; count >= lowest ; count--) {
product = product * count;
}
假设highest = 10
和lowest = 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 = 10
,lowest = 7
):
10 * 7 = 70
= 10 + 10 + 10 + 10 + 10 + 10 + 10 // Adding 10 7-times
请注意,乘法是可交换,顺序无关紧要:
highest * lowest
= lowest * highest
因此无需区分 highest
与lowest
。