递归 基本思想:自己调用自己
递归结构包括两个部分: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:汉诺塔