Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 서투른 계승 문제에 대한 솔루션

<시간/>

일반적으로 양의 정수 n의 계승은 n보다 작거나 같은 모든 양의 정수의 곱입니다. 예를 들어 factorial(10) =10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1입니다.

대신 우리는 서투른 계승을 만듭니다. 정수를 내림차순으로 사용하여 고정된 연산 회전을 위해 곱셈 연산을 교체합니다:곱하기(*), 나누기(/), 더하기(+) 및 빼기(-)의 순서입니다.

예를 들어 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