通過這個例子,要考慮什麼時候用遞歸。
p和q的最大公約數即爲q和r的最大公約數
這句話要能自己說出來,用上
遞歸的三個要點:
1.遞歸總有一個最簡單的情況---方法的第一句總是一個包含return的條件語句
2.遞歸調用總是去嘗試解決一個規模更小的子問題,這樣遞歸才能收斂到最簡單的情況
3.遞歸調用的父問題和嘗試解決的子問題之間不應該有交集
public class Demo001 {
//計算兩個非負整數的最大公約數,p,q,如果其中一個是0則最大公約數是另外一個
//否則將p除以q得到餘數r,p和q的最大公約數即爲q和r的最大公約數
public static void main(String[] args) {
System.out.println(gcd(912,45));
}
public static int gcd(int p, int q) {
if (p == 0 || q == 0) {
int max = Math.max(p, q);
return max;
}
int r = p % q;
//到這裏都好理解,問題是最後一句話怎麼辦
// p和q的最大公約數即爲q和r的最大公約數
return gcd(q, r);
}
}