
原代碼使用多個獨立 if,導致條件滿足後繼續執行後續 if,邏輯錯誤。else if 形成互斥分支,僅執行一個分支。
遞歸調用參數錯誤:
// 原代碼可能寫成
return Gcd(a, b); // 未修改參數,無限遞歸
// 正確應為
return Gcd(a - b, b); // 或 a, b-a 等變化參數
int Gcd(int a, int b) {
if (a == b) return a;
else if (a > b) return Gcd(a - b, b);
else return Gcd(a, b - a);
}
或用取模版(更高效):return b == 0 ? a : Gcd(b, a % b);