我正在使用euclids algorythm的簡化版本來查找兩個整數的hcf。使用遞歸函數。似乎沒有工作,但它始終只是返回。任何想法爲什麼它最終沒有返回a + b?實現遞歸函數來查找HCF/GCD java
public class Euclid {
public static void main(String[] args) {
// TODO Class to find HCF (GCD) of two ints, using recursion
Euclid r = new Euclid();
System.out.println(r.hcf(188, 112));
}
public int hcf(int a, int b){
int c = -11;
if(a == 0 || b == 0){
return a+b; // base case
}
else if (a > b){
return hcf(a-b, b);
}
else if (b > a){
return hcf(b-a, a);
}
return c;
}
}
是的。 'int hcf(int a,int b){return b == 0? a:hcf(b,a%b); 「看起來更簡單,但那不是重點。這個方法是不是靜態的,它在類實例中被調用。 – tkroman
@cdshines不與任何實例變量交互的方法應該始終是靜態的。否則,每個實例都必須攜帶它。這就像額外的行李。爲了進一步說明我的觀點,想象一下,如果main不是靜態 – Rainbolt
情況並非如此。 – tkroman