为什么 return 关键字没有给我想要的结果?

Why is the return keyword not giving me the desired result?

我很想克服这个挑战。我已经被困了将近 2 周。这是代码:

function multiply(top,bottom){
  var num = top;
  var multiple = 2;
  while (num <= bottom){
    num *= multiple;
    console.log(num);
  }
  return num;
}

console.log(multiply(5, 100));// expected outcome is 80 

我很想 return 来自 console.log 的最后一个结果是 80,但是每次我使用 return 关键字时,它都没有带来想要的结果。

您有另一个变量跟踪下一个倍数,以便我们可以在将其分配给 num 之前检查它。

function multiply(top,bottom) {
 var num = top;
 var multiple = 2;
 var next = num * multiple;
 while(next < bottom) {
  num = next;
  next = num * multiple;
 }
 return num;
}

console.log(multiply(5, 100));

这里发生的事情是您将一个数字相乘并一直这样做直到达到想要的结果。但是由于它不是每一步都加 1,所以它可能会超过结果。 你需要的是有单独的变量来存储以前的值:

function multiply(top,bottom){
  var num = top;
  var multiple = 2;
  while (top < bottom)
  {
    num = top; //get prevous value
    top *= multiple;
    console.log(num);
  }
  return num;
}

console.log(multiply(5, 100));// expected outcome is 80

或者少1步就是在while条件下进行计算:

function multiply(top,bottom){
  var num = top;
  var multiple = 2;
  while ((top *= multiple) < bottom)
  {
    num = top; //get prevous value
    console.log(num);
  }
  return num;
}

console.log(multiply(5, 100));// expected outcome is 80