JAVA数据结构和算法 6 递归

老子叫甜甜 提交于 2019-12-03 02:11:29

递归:直接或者间接地调用自己。比如计算连续数的阶乘,计算规律:n!=(n-1)!*n。

每个递归方法都有一个基值(终止)条件,以防止无线地递归下去,以及由此引发的程序崩溃。

采用递归是因为它可以从概念上简化问题,递归算法结构清晰、可读性强,且容易采用数学归纳法证明算法正确性。然而时间花费和空间花费都比非递归算法更大。

关于递归与分治:

分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题与原问题相同且相互独立。

递归地解这些子问题,然后将各子问题的解合并得到原问题的解。

使用分治思想设计出的算法一般是递归算法,所以分治问题的时间复杂度也可以用递归方程来分析

 

关于递归与回溯:

回溯也是一种算法思想,可以用递归实现。通俗点讲回溯就是一种试探,类似于穷举,但回溯有“剪枝”功能。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!