递归和分治的概念性的理解
递归的概念表述: 直接或间接调用自身的算法称为递归算法。
理解:递归算法的可以理解为多个算法的嵌套调用,只是调用算法是同一个,同时需要一个工作栈来作为各层次的数据存储区,包括所有实参指针,局部变量,返回的地址。递归算法效率低,更多的用在设计算法,调试程序,可读性强。递归算法到非递归算法大部分实现的方法都是模拟实现系统的工作栈,但是更有效的是根据实际情况对栈简化,减少操作,压缩栈存储空间。
分治思想:将一个规模为n的问题分解为n个规模较小的问题,子问题互相独立且与原问题相同。递归解决子问题,最后将子问题的解合并得到原问题的解。
充分必要条件:
1.问题可以进行划分为可解决的子问题;
2.具有最优子结构,即分解为若干个相同规模的问题;
3.若干个子问题的解可以合并成该问题的解;
结尾:这次我只会给出相关的概念,后序会陆续推出,与此相关的算法表述,当然还有更多的是代码啦!!!