Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm tổng nhỏ nhất sau khi thực hiện các phép biến đổi trong JavaScript

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