您的位置:首页 > 编程语言 > Java开发

递归算法(java)

2015-10-30 16:28 302 查看
最近在用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 {
return Test2(n-1)+Test2(n-2); //这里可以这样理解:
// 最后一次走一步Test2(n-1)或者最后一次走两步Test2(n-2)
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: