Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

วิธีแก้ปัญหาแฟกทอเรียลที่เงอะงะใน JavaScript


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

เราสร้างแฟคทอเรียลแบบซุ่มซ่ามแทน:ใช้จำนวนเต็มในลำดับที่ลดลง เราสลับการดำเนินการคูณสำหรับการดำเนินการหมุนเวียนแบบคงที่:คูณ (*) หาร (/) บวก (+) และลบ (-) ตามลำดับนี้

ตัวอย่างเช่น เงอะงะ(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