使用递归函数

时间:2017-06-15 19:39:29

标签: javascript recursion iteration operators

我需要编写一个函数:

给定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 )
    }

  }


}

我做错了什么?

2 个答案:

答案 0 :(得分:2)

问题是当你到达num1 == num2的基本情况时,你返回0,然后乘以递归调用乘以0,最后返回{在所有情况下都是{1}}。

在这种情况下,您应该返回0而不是1

也不需要0循环。首先,因为你在循环中无条件地返回它,它永远不会重复。如果它重复,它将无限重复,因为变量永远不会在循环中改变。

&#13;
&#13;
while
&#13;
&#13;
&#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);