遞迴尋找公因數 - 漫遊C++

文章推薦指數: 80 %
投票人數:10人

Q : 輸入幾個正整數,以遞迴方式計算最大公因數並輸出. 在 "求最大公因數" 中,求公 ... int common_divisor(int a, int b, int c, int x) //遞迴函式 2015年6月24日星期三 遞迴尋找公因數 Q :輸入幾個正整數,以遞迴方式計算最大公因數並輸出 在 "求最大公因數" 中,求公因數的函式裡有一個for迴圈 把這段改為遞迴就行了 #include intcommon_divisor(inta,intb,intc,intx)//遞迴函式 { if(a%x==0&&b%x==0&&c%x==0)//終止條件,找到公因數  returnx; x--; if(x>a) x=a; if(x>b) x=b; if(x>c) x=c; returncommon_divisor(a,b,c,x);//測試下一個  } intcommon_divisor(inta,intb,intc) { returncommon_divisor(a,b,c,a);//先假設a是公因數,去呼叫遞迴函式 } intmain() {  inta,b,c;  std::cout<>a>>b>>c;  std::cout<ax>bx>c的判斷,以快速縮小x的起始值來提升運算的效率,但 x>ax>bx>c的判斷只需在開始時執行一次就可以了,不用在每次遞減的過程中重複進行無效比對,程式修改如下: intcommon_divisor(inta,intb,intc,intx)//遞迴函式 { if(a%x==0&&b%x==0&&c%x==0)//終止條件,找到公因數  returnx; returncommon_divisor(a,b,c,x-1);//遞減測試下一個  } intcommon_divisor(inta,intb,intc) {  intx=a; if(x>b) x=b; if(x>c) x=c; returncommon_divisor(a,b,c,x);//先假設abc中最小的是公因數,去呼叫遞迴函式 } 張貼者: TravisHsu 於 晚上8:42 以電子郵件傳送這篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest 沒有留言: 張貼留言 較新的文章 較舊的文章 首頁 訂閱: 張貼留言(Atom) 關於我自己 TravisHsu 檢視我的完整簡介 網誌存檔 ▼  2015 (17) ►  八月 (1) ►  七月 (6) ▼  六月 (10) 繼承 Classtemplate類別樣版/模板 改善記憶體管理效能 class讓資料變聰明 動態配置記憶空間 換個方式看公因數 遞迴尋找公因數 使用陣列 第一個遞迴 從小學題目開始-求最大公因數



請為這篇文章評分?