Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การแยกจำนวนตรรกยะเป็นผลรวมของจำนวนตรรกยะใน JavaScript


ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ 2 ตัวเลข ตัวแรกระบุนับ (numerator) ตัวที่สองระบุส่วน (denominator) ของจำนวนตรรกยะ (rational number) ฟังก์ชันควรคืนค่าอาร์เรย์ของซับอาร์เรย์ 2 ตัวเลขแต่ละอัน ที่เมื่อรวมจำนวนตรรกยะของซับอาร์เรย์แล้วจะได้จำนวนตรรกยะเข้า และตัวนับของซับอาร์เรย์ทุกอันต้องเป็น 1 ต้องทำให้จำนวนซับอาร์เรย์น้อยที่สุด

ตัวอย่าง

โค้ดตัวอย่างดังนี้:

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

ผลลัพธ์

ผลลัพธ์ในคอนโซล:

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