第十三章:递归
说到递归,或许你也听说过递推,这两个概念其实应该算到算法的行列,在python编程入门的教程中我们也只是简单的讲一下,知道这个概念以及可以简单的应用就可以;本章其实也应该属于函数的范畴,因为只要用到递归,就肯定需要借助函数,所以本章也作为函数的一个延伸和应用来讲。
13.1 递归、递推傻傻分不清楚
首先我们通过一个数学问题来深入区分一下递推和递归,阶乘这个概念想必每个人在初高中就已经开始接触了,如果我们说5的阶乘,那结果则是1 x 2 x 3 x 4 x 5所得到的积;以此类推,一个n的阶乘则是从1 x 2 x 3 x … x n,让我们算阶乘的方式,在上学时可能只有手算或者是使用计算器来逐一做乘法运算,但现在我们使用编程语言却可以只用几行代码来实现所有数字阶乘的运算,接下来我们分别使用递推和递归来编写求阶乘的程序。
13.1.1 使用递推进行的阶乘运算
首先我们通过概念来了解一下什么是递推:
递推是按照一定的规律来计算序列中的每个项,通常是通过计算前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。
接下来我们直接编写并分析下面通过递推来实现求阶乘算法的代码:
def factorial(n):
number = 1
for i in range(1, n + 1):
number = number * i
return number
print(factorial(5))
结果:
120
上面的代码是通过递推的方式来实现对5做的阶乘,可以发现这块代码的逻辑很简单,我们首先定义一个初始值为1的number变量(初始化为1的原因是1乘以任何数都为这个数,不会对结果有影响),然后我们使用for循环,同样需要确定for循环中i要从1