일반적으로 양의 정수 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