Viết hàm JavaScript nhận vào một số và trả về giá trị tuyệt đối của hiệu giữa tổng các chữ số ở vị trí chẵn và tổng các chữ số ở vị trí lẻ (tính từ phải sang trái, bắt đầu từ 0).
Giải pháp
Sử dụng đệ quy để xử lý từng chữ số từ cuối số. Chữ số ở vị trí chẵn (index % 2 === 0) được cộng, vị trí lẻ bị trừ.
const num = 345336;
const evenOddDifference = (num, res = 0, ind = 0) => {
if (num) {
if (ind % 2 === 0) {
res += num % 10; // Vị trí chẵn: cộng
} else {
res -= num % 10; // Vị trí lẻ: trừ
}
return evenOddDifference(Math.floor(num / 10), res, ind + 1);
}
return Math.abs(res);
};
console.log(evenOddDifference(num));Kết quả
2Giải thích cho 345336 (đọc từ phải sang trái):
- Vị trí 0 (chẵn): 6 → +6
- Vị trí 1 (lẻ): 3 → -3
- Vị trí 2 (chẵn): 3 → +3
- Vị trí 3 (lẻ): 5 → -5
- Vị trí 4 (chẵn): 4 → +4
- Vị trí 5 (lẻ): 3 → -3
- Tổng: 6 - 3 + 3 - 5 + 4 - 3 = 2