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

Tổng lặp lại các chữ số đến khi còn 1 chữ số trong JavaScript

Mô tả bài toán

Viết hàm đệ quy tính tổng các chữ số của một số, lặp lại cho đến khi kết quả chỉ còn 1 chữ số (digital root). Không chuyển đổi sang chuỗi.

Ví dụ minh họa

const num = 546767643;

const sumDigit = (num, sum = 0) => {
  if (num) {
    return sumDigit(Math.floor(num / 10), sum + (num % 10));
  }
  return sum;
};

const sumRepeatedly = num => {
  while (num > 9) {
    num = sumDigit(num);
  }
  return num;
};

console.log(sumRepeatedly(num));

Kết quả

3

Giải thích toán học

Đây là tính digital root. Công thức tối ưu O(1): num === 0 ? 0 : 1 + (num - 1) % 9.

Cách viết tối ưu

const digitalRoot = n => n === 0 ? 0 : 1 + (n - 1) % 9;