看板 C_and_CPP 關於我們 聯絡資訊
我在書上看到用遞迴練習最大公因數,但是程式解答有缺漏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
kiedveian:如果U不是0的...剛好寫反 11/30 11:18
kiedveian:如果U不是0的話 回傳V 11/30 11:21
x000032001:if(V==0)return U; //V會先變0 11/30 11:24
silia:可是為什麼U不是0要回傳V阿?如果U是3,V是2就會回傳2,不是 11/30 11:24
silia:感謝樓樓上,終於對了^^ 11/30 11:25
flyingnick:因為if裡(U)的值不等於0就是true,true才會執行if裡的東 11/30 12:32
silia:原來沒有判斷試就是判斷true or false喔?我終於懂了~ 11/30 13:05
Severa:GCD依稀記得可以只用一行結束 11/30 15:12
curist:return a*b ? GCD(b, a % b) : a+b; << 這樣對嗎? 11/30 16:23
x000032001:while(a%=b^=a^=b^=a); 一行的GCD 11/30 18:35
xatier:#include <algorithm> using namespace std; __gcd(a, b); 11/30 20:57
xatier:內建的謎之 __gcd() XD 11/30 20:57
loveme00835:樓上...有加底線就是不希望你去呼叫他, 而且不是標準 11/30 21:13
stupid0319:可是我常常用_TEXT()這個也有加底線,呼叫這個不好嗎 11/30 21:37
loveme00835:不同的 framework 就不用說了... x 大那是 std::下的 11/30 21:39
u941716:這是輾轉相除法嗎? 12/12 20:35