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