javascript中的无限while循环

时间:2019-02-19 16:38:26

标签: javascript while-loop

我在练习过程中遇到的问题如下:

编写一个JavaScript程序以创建一个将2个整数作为输入的函数。只要结果(商)是一个整数(即,余数为零),该函数就将第一个整数除以第二个整数,并返回商作为结果。您的输出代码应采用console.log(“ Result is”,variableName)

格式。

下面是我的代码:

var num = prompt("Enter number to divide");
var d = prompt("Enter divisor");

function divide(x, y) {
  var result;
  if (d === 1) {
    result = num;
  } else {
    while (num % d === 0) { //while error
      result = num / d;
    }
  }
  return result;
}
var output = divide(num, d);
console.log("Result is: ", output);

如果我删除了while循环,程序可以正常工作,但是问题描述表明我必须使用它。

我在做什么错了?

2 个答案:

答案 0 :(得分:0)

您的while循环取决于num,但是在循环后您无需为其分配新的值。这导致条件始终保持不变。

var num = prompt("Enter number to divide");
    var d = prompt("Enter divisor");

    function divide(x, y) {
      var result = x;
      if (y === 1) {
        return result;
      } else {
        while (result % y === 0) {
          result = result / y;
        }
      }
      return result;
    }
    var output = divide(num, d);
    console.log("Result is: ", output);

答案 1 :(得分:0)

有几个问题:

1):如果您的函数接收到参数xy,请在其作用域内使用这些参数,请勿访问全局变量。

2)您将永远不会更改在while条件下求值的变量,因此求值将永远相同!

3)您可以做的另一件事是在接收到的参数上添加一些验证。

现在,您的代码可以重新排列为以下代码:

function divide(x, y)
{
    if (isNaN(x) || isNaN(y))
        return "Invalid arguments!";

    if (y === 1)
        return x;

    while (x % y === 0)
    {        
        x = x / y;
    }

    return x;
}

var num = prompt("Enter number to divide");
var d = prompt("Enter divisor");
var output = divide(num, d);
console.log("Result is: ", output);