- 递归在函数里就是自己调用自己的一个过程
- 递归函数求n的阶乘
def Fac(n):
if n >= 0:
if n <= 1:
return 1
else:
return n * Fac(n-1) # 相当于n乘n-1的阶乘
else:
return 0
Fac(5)
120
运行结果如下:
2. 递归函数求斐波那契数列
def Fib(index):
if index <= 0:
a = 0
elif index <= 2:
a = 1
else:
a = Fib(index - 2) + Fib(index - 1)
return a
Fib(12)
运行结果如下:
3. 递归函数列表求和
def Sum(L):
if not L:
return 0
else:
return L[0] + Sum(L[1:]) #相当于列表第一个元素加上除第一个元素之和
Sum([1,2,3])
运行结果如下:
5. 递归函数任意类型求和
只需将列表求和中的
if not L
—>if len(L) == 1
return 0
—>return L[0]
或者
定义 first, *rest = L
if not L
—>if not rest
return 0
—>return first
L[0] + Sum(L[1:])
—>return first+ MySum2(rest))
注意:
这两个函数弊端:会由于传入空的列表而失败
这两个函数好处:能作用于支持+操作的任何对象类型,不只是数字
def MySum1(L):
if len(L) == 1:
return 0
else:
return L[0] + MySum(L[1:]) #相当于第一个元素加上除第一个元素之和
MySum(('a','b','c'))
运行结果如下:
def MySum2(L):
first
*rest = L
return first
else:
returnfirst + MySum2(rest) #相当于第一个元素加上除第一个元素之和
MySum(('a','b','c'))
运行结果如下: