Python函数之递归函数
1.递归函数
- 前提:人理解函数,神理解递归。
递归函数也是函数,有点儿类似于循环,但不是循环。我们做一个递归函数:
def func():
print('in func')
func()
func()
我们通过代码测试一下递归函数默认的递归次数是多少?官方文档说明,默认的递归深度为1000层。
def func(n):
print(n)
func(n+1)
func(1)
# 我们也可以自己设置递归次数。
import sys
sys.setrecursionlimit(100000)
def func(n):
print(n)
func(n + 1)
func(1)
递归的成型条件:
- 函数中自己调用自己。
- 要有明确的终止条件。
如果我们使用递归函数递归十几次都没有得到结果,就不要用递归函数了,效率低。
示例题:
-
阶乘试题:求
7*6*5*4*3*2*1
结果。def func(n): """ if n == 1: return 1 else: return n * func(n - 1) """ return n * func(n - 1) if n != 1 else 1 ret = func(4) print(ret) """ 3 * func(2) 3 * 2 * func(1) 3 * 2 * 1 """
-
循环一个列表,如果列表里面嵌套这多个列表,将列表里面所有的元素打印出来。
l1 = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"] l2 = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn", [4, 5, 6, [7, [11, 12, 34, 5], 10, 8, 9]]] # 将里面的每个元素打印出来。 # def func(lst): # for i in lst: # if type(i) == list: # for j in i: # print(j) # else: # print(i) # func(l1) # def func(lst): # """ # for i in lst: # if type(i) == list: # # for j in i: # # print(j) # if type(j) == list: # # for r in j: # if type(r) == list: # """ # else: # print(i) # func(l1) def func(lst): for i in lst: if type(i) == list: func(i) else: print(i) func(l1) func(l2)