Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên dương. Ta có thể biến đổi các phần tử bằng cách chạy phép toán sau bao nhiêu lần cũng được: if arr[i] > arr[j] then arr[i] = arr[i] - arr[j]. Khi không còn biến đổi nào có thể, hàm trả về tổng của mảng.
Ví dụ
Dưới đây là mã nguồn:
const arr = [6, 9, 21];
const smallestSum = (arr = []) => {
const equalNums = arr => arr.reduce((a, b) => {
return (a === b) ? a : NaN;
});
if(equalNums(arr)){
return arr.reduce((a, b) => {
return a + b;
});
}else{
const sorted = arr.sort((a, b) => {
return a-b;
});
const last = sorted[arr.length-1] - sorted[0]
sorted.pop();
sorted.push(last);
return smallestSum(sorted);
};
};
console.log(smallestSum(arr));Kết quả
Kết quả đầu ra trong console:
9