Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng các số nguyên dương. Chúng tôi có thể biến đổi các phần tử của nó bằng cách chạy thao tác sau trên chúng nhiều lần theo yêu cầu -
if arr[i] > arr[j] then arr[i] = arr[i] - arr[j]
Khi không thể biến đổi được nữa, hàm của chúng ta sẽ trả về tổng của nó.
Ví dụ
Sau đây là mã -
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));
Đầu ra
Sau đây là đầu ra của bảng điều khiển -
9