functiongcd(a, b) { return b ? gcd(b, a % b) : a; }
這種遞歸實現的歐幾里得算法非常簡潔且高效。它利用了數學上的一個性質:兩個整數的最大公約數與它們的余數和較小數的最大公約數相同。即 gcd(a, b) = gcd(b, a % b)。
5、快速冪
functionfastPower(b, n) { if (n === 0) return1; const result = fastPower(b, Math.floor(n / 2)); return n % 2 === 0 ? result * result : b * result * result; }
用于高效地計算 b 的 n 次方??焖賰缢惴ㄌ貏e適用于計算大冪次的情況,因為它將冪次的計算復雜度從 O(n) 降低到 O(log n)。
6、并查集
intfind(int x){ x==parent[x]?:find(parent[x]); }
并查集(Union-Find)數據結構中的 find 函數的簡潔實現。
遞歸查找:find 函數通過遞歸的方式查找元素 x 的根節點。遞歸會在元素與其父節點不同時,繼續查找父節點的父節點,直到找到一個元素其父節點是它自己的元素,即根節點。
路徑壓縮:代碼中的三元運算符 ?: 實現了路徑壓縮技術。當 x 不是其根節點時(即 x != parent[x]),find 函數會調用自身并傳入 parent[x] 作為參數。在遞歸返回的過程中,每個節點的父節點指針都被更新為最終的根節點,這樣可以減少后續查找操作的深度。