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

Giải pháp cho vấn đề giai thừa vụng về trong JavaScript

Thông thường, giai thừa của một số nguyên dương n là tích của tất cả các số nguyên dương nhỏ hơn hoặc bằng n. Ví dụ:giai thừa (10) =10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1.

Thay vào đó, chúng tôi tạo ra một giai thừa vụng về:sử dụng các số nguyên theo thứ tự giảm dần, chúng tôi hoán đổi các phép tính nhân thành một vòng quay cố định của các phép toán:nhân (*), chia (/), cộng (+) và trừ (-) theo thứ tự này.

Ví dụ, vụng về (10) =10 * 9/8 + 7 - 6 * 5/4 + 3 - 2 * 1. Tuy nhiên, các phép toán này vẫn được áp dụng theo thứ tự các phép toán thông thường của số học:chúng ta thực hiện tất cả các phép nhân và chia. các bước trước bất kỳ bước cộng hoặc trừ nào cũng như các bước nhân và chia được xử lý từ trái sang phải.

Hãy viết mã cho hàm này bằng JavaScript -

Ví dụ

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

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

7
11.75
16.609523809523807
7.666666666666668