python之递归
python之递归
大多数情况下,我们见到的是一个函数调用其他函数。除此之外,函数还可以自我调用,这种类型的函数被称为递归函数。
递归(Recursion),在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。
在使用递归时,需要注意以下几点:
- 递归就是在过程或函数里调用自身
- 必须有一个明确的递归结束条件,称为递归出口。
注意: 切勿忘记递归出口,避免函数无限调用。
典型的算法:
大多数学过数学、计算机科学或者读过编程相关书籍的人,想必都会遇到阶乘:
n! = 1 × 2 × 3 × … × n
也可以用递归方式定义:
def func(x): if x == 1: return 1 return x*func(x-1) ''' def func(3): if x == 1: return 1 return 3*func(3-1) 3*2*1 def func(2): if x == 1: return 1 return 2*func(2-1) 2*1 def func(1): if x == 1: return 1 1 return x*func(x-1) ''' ret = func(3) print(ret)
还可以用:
n! = (n-1)! × n
其中,n >= 1,并且 0! = 1。
由于简单、清晰,因此其常被用作递归的示例。
PS: 除了阶乘以外,还有很多算法可以使用递归来处理,例如:斐波那契数列、汉诺塔等。
迭代实现:
相比递归,阶乘的迭代实现更容易理解:
def fun2(x): result = 1 for i in range(2,x+1): #因为第一次乘的时候result已经是1了 所以从2开始 result *= i return result ret2 = func(3) print(ret2)
开始时,result 为 1,进入 for 循环,对之前的结果累积乘以 i,直至 n。
补充:



浙公网安备 33010602011771号