В этой программе Javascript нет ничего в консоли

#javascript #console

Вопрос:

поэтому мне нужен ответ на этот вопрос

я ожидал, что консоль будет выглядеть так (если вы введете 69)

  69
 208
 104
 52
 26
 13
 40
 20
 10
 5
 16
 8
 4
 2
 1
 

но в консоли ничего нет, поэтому вот программный код

 function mod(n, m) {
  return ((n % m)   m) % m;
}
var a = prompt("please input a number");
do {
  var b = mod(a, 2)
  if (b == 0) {
    var a = a / 2
  } else a = (3 * a)   1
  console.log("a");
}
while (a !== 0) 

Комментарии:

1. p.s. я использовал JSFiddle

2. console.log(a); вместо console.log("a"); (вы регистрировали строку "a" , а не переменную a ) и while (a !== 1) вместо while (a !== 0) , так как эта последовательность никогда не достигает нуля.

3. Речь идет о гипотезе Коллатца, которая в основном гласит, что выполнение этого для любого числа а) в конечном итоге достигнет 1 б) войдет в бесконечный цикл. Это именно ответ на ваш вопрос здесь: ожидание, пока a достигнет 0, никогда не произойдет. Запуск этого кода приведет к зависанию браузера и в какой-то момент попросит вас остановить скрипт.

Ответ №1:

В этом коде есть несколько ошибок.

Прежде всего, вы должны записать console.log(a) a переменную в журнал.

Кроме того, вам не нужно снова объявлять переменную.

Наконец, ваш код находится в бесконечном цикле, потому что a не совпадает a !== 0 в цикле.

Я верю, что это тот код, который вам нужен.

 function mod(n, m) {
  return ((n % m)   m) % m;
}
let a = prompt("please input a number");
let b;
do {
  b = mod(a, 2)
  if (b == 0) {
    a = a / 2
  } else {
    a = (3 * a)   1
  }
  console.log(a);
}
while (a !== 1)
 

Ответ №2:

Вы можете попробовать это:

 function mod(n, m) {
  return ((n % m)   m) % m;
}
var a = prompt("please input a number");
do {
  var b = mod(a, 2)
  if (b == 0) {
    var a = a / 2
  } else a = (3 * a)   1
  console.log(a);
}
while (a !== 1) 

И если вы также хотите отобразить свой ввод, попробуйте:

 function mod(n, m) {
  return ((n % m)   m) % m;
}
var a = prompt("please input a number");
var c= a;
console.log(c);
do {
  var b = mod(a, 2)
  if (b == 0) {
    var a = a / 2
  } else a = (3 * a)   1
  console.log(a);
}
while (a !== 1)