[英]Recursive function to calculate greatest common divisor
我正在嘗試實現一個遞歸函數來計算兩個數字的gcd,但是我的代碼無法正常工作,知道什么地方出了問題嗎?
public static int gcd(int a, int b) {
if (a == b) {
return a;
}
while (a != b) {
if (a > b) {
gcd(a - b, b);
} else if (b > a) {
gcd(a, b - a);
}
}
return a;
}
如果使用遞歸,則不需要while循環。 做就是了:
public static int gcd(int a, int b) {
if (a == b) {
return a;
}
if (a > b)
return gcd(a - b, b);
return gcd(a, b - a);
}
順便說一句, while (a != b)
是一個無限循環(如果達到)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.