解决 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

更新于: 31-8-2020

311 次浏览

职业起航

通过完成课程获得认证

开始吧
广告
© . All rights reserved.