首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言遞歸求最大公約數:if 與 else if 邏輯差異

     編輯:程式設計疑難解答

錯誤代碼 正確代碼

問題分析

原代碼使用多個獨立 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);

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved