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

Phân tích số hữu tỉ dưới dạng tổng các số hữu tỉ trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một mảng chính xác hai số.

Phần tử đầu tiên chỉ định tử số của bất kỳ số hữu tỉ nào và phần tử thứ hai chỉ định mẫu số của cùng một số.

Hàm của chúng ta sẽ trả về một mảng gồm bất kỳ số mảng con nào gồm hai phần tử, mỗi mảng sao cho khi số hữu tỉ được chỉ định bởi mảng con được thêm vào, chúng sẽ tổng thành số hữu tỉ đầu vào và tử số của tất cả các mảng con phải là 1.

Chúng tôi cũng cần đảm bảo rằng số lượng mảng con càng nhỏ càng tốt.

Ví dụ

Sau đây là mã -

const num = '2/3';
const decompose = (num = '') => {
   const fractions = [];
   let res = eval(num);
   if (res >= 1) {
      fractions = ['' + Math.floor(res)];
      res = res - Math.floor(res);
   };
   let sum = 0;
   let denom = 2;
   while (sum <= res - 0.000000001) {
      if (1 / denom + sum <= res) {
         fractions.push("1/" + denom);
         sum += 1 / denom;
      }
      denom++;
   }
   return fractions;
}
console.log(decompose(num));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[ '1/2', '1/6' ]