Обратный номер без использования обратной функции - PullRequest
0 голосов
/ 02 октября 2019

Мне нужно поменять число в JavaScript, но я не знаю, почему следующий код входит в бесконечный цикл.

var num=1234;
var reverse=0;
while(num!=0) {
  reverse=reverse*10;            
  reverse=reverse+(num%10);
  num=num/10;
}
console.log(reverse);

Я ожидаю вывод 4321, но фактический выводбесконечный цикл

Ответы [ 4 ]

2 голосов
/ 02 октября 2019

Операция num = num / 10 должна быть целочисленным делением (в противном случае num займет очень много времени, чтобы стать 0). Используйте Math.trunc для удаления любой дробной части:

num=Math.trunc(num/10);

вместо:

var num = 1234;
var reverse = 0;
while(num !== 0){
  reverse = reverse*10;            
  reverse = reverse+(num%10);
  num = Math.trunc(num/10);
}
console.log(reverse);
1 голос
/ 02 октября 2019

другой метод:

var num = 1234
  , rev = 0
do {
  rev = (rev*10) + (num%10)
} while (num = Math.trunc(num/10))

console.log(rev)
0 голосов
/ 02 октября 2019

Вы можете просто использовать Math.trunc (x), чтобы извлечь целое число из результатов деления. или вы также можете использовать следующие методы:

Другой метод

var num = 1234;
var reverse = 0;
var final = 0;
while(num !== 0){
    reverse = num%10;
    num = parseInt(num/10);
    console.log(reverse);
    if(final! = '0'){
        final = final.toString().concat(reverse);
    }else {
        final = reverse;
    }
}
console.log(final);

, или даже вы можете сделать что-то подобное;

var num = 1234;
var reverse = num.toString().length;
var res = num.toString().charAt(1);
var final = "";

for(var i = reverse; i >= 0; i--){
    console.log(num.toString().charAt(i));
    final = final.concat(num.toString().charAt(i))
}
console.log(final);
0 голосов
/ 02 октября 2019

Изменить

num=num/10;

На

num = num/10|0;

Есть много способов сделать это, отметьте здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...