Python的递归算法

        今天看了Python的递归算法,之前在C语言以及程序方法设计中的二叉树中学过递归算法,上网查资料的时候又看到一篇不错的关于递归算法的博客(深入浅出 Python 中的递归算法 (qq.com)),算是又深入学了一次递归。

        递归的本质就是将一个规模比较大的问题拆分成多个相似的、规模也比较小的问题,与数学中的数学归纳法有点相似。数学归纳法指的是当n等于1或者其他指定值的时候,结论是成立的,假设当我们掌握了当n = k 时候,结论成立的结果,那当 n = k + 1时,利用之前掌握的结论,能否推出现在的结论成立。

        递归算法也是如此。当n等于某个值(一般为0 或 1)的时候,可以轻松得答案(这也是递归函数的出口),紧接着,在掌握解决n-1的规模的问题能力之上,就可以解决规模为n的问题了。

        总结:递归是解决某些具有自相似性的复杂问题的有效方法

        递归算法三定律:

                递归算法必须要有结束条件(最小规模问题的直接解决)

                递归算法必须能改变状态向基本结束条件演进(减小问题规模)

                递归算法必须调用自身(解决减小了规模的相同问题)

你可能感兴趣的:(算法)