[問題] 求最大公因數

看板C_and_CPP作者 (被找麻煩了...)時間13年前 (2010/11/30 11:13), 編輯推噓4(4012)
留言16則, 10人參與, 最新討論串4/4 (看更多)
我在書上看到用遞迴練習最大公因數,但是程式解答有缺漏orz... 解答只有副程式,補上主程式後是這樣: #include<iostream> using namespace std; int GCD(int U,int V) { if(U)  ←問題出在這裡。我不懂if(U)是為什麼,但是我又想不出來 {     要怎麼把他補完整...  return V; } else { return GCD(V,U%V); } } int main() { int num1=0,num2=0; cout << "Input number 1: " ; cin >> num1; cout << "Input number 2: "; cin >> num2; cout << GCD(num1,num2); system("PAUSE"); } 麻煩幫我看看,他到底想表達什麼意思好嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.81.36

11/30 11:18, , 1F
如果U不是0的...剛好寫反
11/30 11:18, 1F

11/30 11:21, , 2F
如果U不是0的話 回傳V
11/30 11:21, 2F

11/30 11:24, , 3F
if(V==0)return U; //V會先變0
11/30 11:24, 3F

11/30 11:24, , 4F
可是為什麼U不是0要回傳V阿?如果U是3,V是2就會回傳2,不是
11/30 11:24, 4F

11/30 11:25, , 5F
感謝樓樓上,終於對了^^
11/30 11:25, 5F

11/30 12:32, , 6F
因為if裡(U)的值不等於0就是true,true才會執行if裡的東
11/30 12:32, 6F

11/30 13:05, , 7F
原來沒有判斷試就是判斷true or false喔?我終於懂了~
11/30 13:05, 7F

11/30 15:12, , 8F
GCD依稀記得可以只用一行結束
11/30 15:12, 8F

11/30 16:23, , 9F
return a*b ? GCD(b, a % b) : a+b; << 這樣對嗎?
11/30 16:23, 9F

11/30 18:35, , 10F
while(a%=b^=a^=b^=a); 一行的GCD
11/30 18:35, 10F

11/30 20:57, , 11F
#include <algorithm> using namespace std; __gcd(a, b);
11/30 20:57, 11F

11/30 20:57, , 12F
內建的謎之 __gcd() XD
11/30 20:57, 12F

11/30 21:13, , 13F
樓上...有加底線就是不希望你去呼叫他, 而且不是標準
11/30 21:13, 13F

11/30 21:37, , 14F
可是我常常用_TEXT()這個也有加底線,呼叫這個不好嗎
11/30 21:37, 14F

11/30 21:39, , 15F
不同的 framework 就不用說了... x 大那是 std::下的
11/30 21:39, 15F

12/12 20:35, , 16F
這是輾轉相除法嗎?
12/12 20:35, 16F
文章代碼(AID): #1Cz6lN0S (C_and_CPP)
文章代碼(AID): #1Cz6lN0S (C_and_CPP)