бесконечный цикл while в JavaScript - PullRequest
0 голосов
/ 19 февраля 2019

Мой проблемный вопрос, как и в практическом курсе, выглядит следующим образом:

Напишите программу на 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 голосов
/ 19 февраля 2019

Есть несколько проблем:

1) Если ваша функция получает аргументы x и y, используйте их в своей области видимости, не обращайтесь к глобальнымпеременные.

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);
0 голосов
/ 19 февраля 2019

Ваш цикл 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...