Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Đếm số bước để số trở thành đối xứng trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một số num làm đối số duy nhất. Hàm phải trả về số bước đặc biệt cần thiết để được một số đối xứng. Bước đặc biệt là: "đảo ngược các chữ số, và cộng vào số gốc". Nếu số kết quả không phải đối xứng, lặp lại thủ tục với tổng cho đến khi được số đối xứng.

Ví dụ, nếu đầu vào là:

Đầu vào

const num = 87;

Đầu ra

const output = 4;

Giải thích

Vì các bước liên quan là:

87 + 78 = 165; 165 + 561 = 726; 726 + 627 = 1353; 1353 + 3531 = 4884

Ví dụ

Dưới đây là mã thực hiện:

const num = 87;
const countSteps = (num) => {
  let res = 0;
  while (!isPalindrome(num)) {
    res++;
    num += +('' + num).split``.reverse().join``;
  }
  return res;
};
const isPalindrome = num => {
  let i = 0;
  let str = '' + num;
  while (i++ <= str.length / 2) {
    if (str[i] !== str[str.length - 1 - i]) return false;
  }
  return true;
};
console.log(countSteps(num));

Kết quả

4