我需要编写一个函数:
给定2个整数,它返回两个给定整数之间的乘积,从num1开始,不包括num2。我不想使用for循环。
注意:
* The product between 1 and 4 is 1 * 2 * 3 = 6.
* If num2 is not greater than num1, it should return 0.
var output = multiplyBetween(2, 5);
console.log(output); // --> 24
到目前为止我的内容如下:
function multiplyBetween(num1, num2) {
if (isNaN(num1) || isNaN(num2)) return NaN;
if (num1 === 0 || num2 ===0) return 0;
if (num1 === num2) return 0;
if (num2 < num1){
return 0;
}
else{
while(num1<num2){
return num1 * multiplyBetween(num1 + 1, num2 )
}
}
}
我做错了什么?
答案 0 :(得分:2)
问题是当你到达num1 == num2
的基本情况时,你返回0
,然后乘以递归调用乘以0
,最后返回{在所有情况下都是{1}}。
在这种情况下,您应该返回0
而不是1
。
也不需要0
循环。首先,因为你在循环中无条件地返回它,它永远不会重复。如果它重复,它将无限重复,因为变量永远不会在循环中改变。
while
&#13;
答案 1 :(得分:0)
function multiplyBetween(num1, num2) {
let total = 1;
if (num1 >= num2) {
return 0;
} for (let i = num1; i<num2;i++) {
total*=i;
} return total;
}
multiplyBetween(2, 5);