解決 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
廣告