Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm tổng nhỏ nhất sau khi biến đổi trong JavaScript

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