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