[資料結構(Data Structure, DS) 教學 教程 教材 Tutorial] 基礎遞迴 - 最大公因數
YehYeh\'s Notepad yehyeh@gmail.com 

[資料結構(Data Structure, DS)] 基礎遞迴

最大公因數

  • 用遞迴設計最大公因數(Greatest Common Divisor, GCD)演算法
    • 最大公因數:兩整數的最大公因數可用歐幾里德演算法(Euclid's Algorithm)[輾轉相除法]求出
    • 設計遞迴
      • Base Case:if (A mod B) == 0 return B;
      • General Case:ohterwise return GCD( B, A mod B )
    • 遞迴演算法
      int GCD(int A, int B)
      {
          if( (A % B) == 0)
              return B;
          else
              return GCD(B, A%B);
      }
      
      int GCD(int A, int B)
      {
          if( (A % B) == 0)
              return B;
          else
              return GCD(B, A%B);
      }
      
      int GCD(int A, int B)
      {
          if( (A % B) == 0)
              return B;
          else
              return GCD(B, A%B);
      }
      
      int GCD(int A, int B)
      {
          if( (A % B) == 0)
              return B;
          else
              return GCD(B, A%B);
      }
      
    • 問題:若執行GCD(21,56)、GCD(56,21)分別要呼叫GCD( )幾次?
      • 最大公因數(GCD)輾轉相除法的遞迴呼叫
      • ∴分別為5次、4次