递归   基本思想:自己调用自己

递归结构包括两个部分:1.定义递归头 即什么时候不调用自身方法    如果没有头,将进入死循环,也就是递归的结束条件

2.递归体  即什么时候需要调用自身方法

练习1:

 /**
* 用递归解决下面描述的问题:
* 有三种面值的硬币,分别是1分,2分,5分,
* 现在给出一个价值,例如价值11,问组成该价值最少需要的硬币数量是多少???
* 11 = 1 10
* 11 = 2 9
* 11 = 5 6
*/

public class Coin {
    public static int lessCoin(int i){
        if(i==1||i==2||i==5){  //如果是一角、两角、五角的直接返回一个数量
            return 1;
        }else if(i<5){   //3角和4角都返回2个数量
            return 2;
        }else{
            return  Math.min(1+lessCoin(i-1),Math.min(1+lessCoin(i-2), 1+lessCoin(i-5)));  //若大于5,则应该返回三个中的最小数量
        }
    }

    public static void main(String[] args) {
        System.out.println(lessCoin(12));
        System.out.println(lessCoin(13));
    }
}

练习2:汉诺塔

02-13 07:51