Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。
二、递归算法解决问题的特点:
【1】递归就是方法里调用自身。
【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。
三、代码示例:
代码执行流程图如下:
此程序中n=5就是程序的出口。
② 递归算法执行效率比功能相同的非递归算法的执行效率高。是否正确
错。
递归写起来简单,但是效率比较低。
③ 在c语言中递归和迭代有什么区别和联系各自的优缺点是什么二者分别适合解决什
能力有限,仅知几点
两者都是重复某一操作直到满足条件为止。
不同之处在于,递归是函数调用自身,而迭代是使用循环。
某些情况下递归更加简单,可读性更高,而用循环则十分复杂。如二分法,快速排序等。
递归很容易导致栈溢出,导致程序崩溃,而循环不会。
综上所述,能用循环用循环,递归是万不得已的手段。
④ JAVA中的递归方法,求讲一下。
自己调用自己或几个方法相互调用。
最经典的是求正整数阶的算法:
int fact(int i){
if(i<=1)return 1;
return fact(i-1)*i;
}
多数递归方法可以转换成非递归方法。
一般同功能的非递归方法,执行效率要优于递归方法。但合理的使用递归方法,可以使代码结构更清晰,更有可读性,从而更方便维护。
⑤ 编程递归算法是不是很低效
相对来说,递归的效率低,主要是因为递归时会反复调用函数(递归函数)。
而函数发生调用时,程序会将当前的一些数据存入堆栈中(保存现场),等函数调用结束时,将堆栈中的数据再取出来(恢复现场)。函数调用时,是有开销的(占用堆栈资源,占用CPU时间)。
所以相对来说,递归的效率比较低。在可能的情况下,建议将递归程序改成迭代模式。
⑥ 递归算法与非递归算法的比较
否,一般而言非递归算法更有效;但很多时候递归算法容易实现,编程简单。