#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)