递归算法(java)

 

最近在用EasyUI中的tree遍历节点的时候用到了递归算法,现总结如下:

 * 递归算法:在函数里调用自身,但必须确定递归出口,即结束条件,不然就是无限循环;
 * 递归一般解决的问题:
       1.数据的定义是按递归定义的(Fibonacci函数);
       2.树的遍历,图的搜索;
       3.回溯;
 * 递归的缺点:
       递归算法的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出。

测试了两个例子:

1.

	/**
	 * 1.求5的阶乘5=5*4*3*2*1
	 */
	public static int Test1(int n){
		if (n==0||n==1) {
			return 1;
		}else {
			return n*Test1(n-1);
		}
	}

  

 2.

    /**
     * 2.楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,有多少种走法?
     */
    public static int Test2(int n){
        if (n==1) {
            return 1;
        }else if (n==2) {
            return 2;
        }else {
            //这里可以这样理解:最后一次走一步Test2(n-1)或者最后一次走两步Test2(n-2)
            return Test2(n-1)+Test2(n-2);
        }
    }


    public static void main(String[] args) {
        System.out.println(Test2(10));
    }

  

 

posted @ 2015-10-30 16:29  monkjavaer  阅读(169)  评论(0编辑  收藏  举报