Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Giải pháp bài toán giai thừa lúng túng (clumsy factorial) trong JavaScript


Thông thường, giai thừa của 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ụ: factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1.

Chúng ta thay thế bằng "giai thừa lúng túng": sử dụng các số theo thứ tự giảm dần, thay đổi phép nhân theo chu kỳ cố định: nhân (*), chia (/), cộng (+), trừ (-) theo thứ tự này.

Ví dụ: clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1. Tuy nhiên, các phép toán vẫn tuân theo thứ tự ưu tiên toán học: nhân và chia trước, cộng và trừ sau, nhân và chia xử lý từ trái sang phải.

Dưới đây là mã JavaScript cho hàm này:

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

Kết quả

Đầu ra trong console sẽ là:

7 11.75 16.609523809523807 7.666666666666668