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

Phân rã số hữu tỉ thành tổng các số hữu tỉ trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng đúng hai số. Phần tử đầu là tử số, phần tử thứ hai là mẫu số của một số hữu tỉ. Hàm sẽ trả về mảng các mảng con hai phần tử sao cho khi cộng các số hữu tỉ của mảng con thì bằng số hữu tỉ đầu vào, và tử số của tất cả mảng con phải là 1. Cần đảm bảo số mảng con ít nhất có thể.

Ví dụ

Dưới đây là mã nguồn:

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));

Kết quả

Kết quả đầu ra trong console:

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