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

วิธีแก้ปัญหา Clumsy Factorial ใน JavaScript


ปกติแล้วแฟกทอเรียลของจำนวนเต็มบวก n คือผลคูณของจำนวนเต็มบวกทั้งหมดที่น้อยกว่าหรือเท่ากับ n เช่น factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

แต่เราทำ "Clumsy Factorial": ใช้จำนวนเต็มตามลำดับลดลง สลับการคูณด้วยการหมุนคงที่ของออเปอเรเตอร์: คูณ (*), หาร (/), บวก (+), ลบ (-) ตามลำดับนี้

เช่น clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1 อย่างไรก็ตาม ออเปอเรชันเหล่านี้ยังคงใช้ลำดับการดำเนินการทางคณิตศาสตร์ปกติ: คูณและหารก่อน บวกและลบทีหลัง คูณและหารประมวลผลจากซ้ายไปขวา

มาเขียนโค้ดสำหรับฟังก์ชันนี้ใน JavaScript กัน

ตัวอย่าง

const clumsy = num => {
  let k=num;
  let res = 0, temp=1, i=0;
  while(k>0){
    temp = k;
    if(k-1>0){
      temp*=(k-1);
    }
    if(k-2>0){
      temp/=(k-2);
    }
    if(k-3>0){
      if(k===num){
        temp+=(k-3);
      }else{
        temp-=(k-3);
      }
    }
    if(k===num){
      res = temp;
    }else{
      res = res-temp;
    }
    k = k-4;
  }
  return res;
};
console.log(clumsy(4));
console.log(clumsy(10));
console.log(clumsy(16));
console.log(clumsy(5));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้

7 11.75 16.609523809523807 7.666666666666668