Java基础:递归

Java基础:递归

  • 递归就是自己调用自己的方法
  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
  • 递归有两个部分:递归头,递归尾
    • 递归头:指明什么时候不调用自身(不指明会陷入【死循环】)——结束
    • 递归尾:指明什么时候调用自身——开始
  • 示例1

无递归头的递归(会陷入死循环,栈溢出 ):

public class Demo05 {
    public static void main(String[] args) {

        Demo05 demo05 = new Demo05();
        demo05.test();

    }
    public void test() {
        System.out.print("从前有座山,山上有座庙,庙里有个老和尚对小和尚说:");
        test();
    }
}

输出异常

Java基础:递归

  • 示例2

正常的递归:

public class Demo06 {
    //5! 5*4*3*2*1
    public static void main(String[] args) {

        System.out.println(f(5));

    }
    public static int f(int n) {
        return n == 1? 1: n * f(n-1);//return 1时为边界条件
    }
}

输出

120
上一篇:cmo.xu.base.Demo05


下一篇:变量的随手笔记