算法---求兩個數的最大公約數(遞歸)

通過這個例子,要考慮什麼時候用遞歸。


	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);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章