บทความนี้สาธิตการคำนวณผลรวมและผลคูณของหลักตัวเลข แล้วหาความต่างสัมบูรณ์
ตัวอย่าง
num = 12345 sum = 15, product = 120, diff = 105
ตัวอย่างโค้ด
const num = 12345;
const product = (num, res = 1) => {
if (num) {
return product(Math.floor(num / 10), res * (num % 10));
}
return res;
};
const sum = (num, res = 0) => {
if (num) {
return sum(Math.floor(num / 10), res + (num % 10));
}
return res;
};
const productSumDifference = (num = 1) => {
return Math.abs(product(num) - sum(num));
};
console.log(productSumDifference(num));
ผลลัพธ์
105
คำอธิบาย
ใช้ recursion แยกหลักตัวเลขด้วย % 10 และ / 10
product: base case num=0 คืน 1 (identity), sum: base case คืน 0
Time: O(log n) digits, Space: O(log n) recursion stack
Iterative version ใช้ while loop ได้เช่นกัน