课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据结构和算法是程序员在学习软件开发技术的时候需要重点掌握的一个编程基础知识,而今天我们就通过案例分析来了解一下,递归算法都有哪些基础知识需要程序员掌握。
一、如何理解“递归”
递归是一种应用非常广泛的算法(或者编程技巧)。
二、递归的三个条件
1、一个问题的解可以分解为几个子问题的解
2、这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样
3、存在递归终止条件
三、如何编写递归代码
写递归代码关键的是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再失调终止条件,后将递推公式和终止条件,后将递推公式和终止条件翻译成代码。
四、递归代码的注意事项
1、递归代码要警惕堆栈溢出
函数调用的机制是通过堆栈来实现的,递归代码层次过深会容易溢出堆栈空间。
2、递归代码要警惕重复计算
递推公式分解时,会存在大量重复计算。
五、递归代码改写为非递归代码
递归代码有利有弊,利是递归代码的表达力很强,写起来非常简洁;而弊就是空间复杂度高、有堆栈溢出的风险、存在重复计算、过多的函数调用会耗时较多等问题。
在开发过程中,要根据实际情况来选择是否需要用递归的方式来实现。
是否所有的递归代码都可以改为迭代循环的非递归写法?
笼统地讲,是的。因为递归本身就是借助栈来实现的,只不过我们使用的栈是系统或者虚拟机本身提供的,我们没有感知而已。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。