递归

递归
在函数中调⽤用函数本身. 就是递归
在python中递归的深度最大到998
递归的应用:我们可以使⽤用递归来遍历各种树形结构, 比如我们的⽂件夹系统. 可以使⽤用递归来遍历该
文件夹中的所有⽂文件
递归的缺点:占内存
递归的优点:会让代码变简单
1 def func(n):
2     # 返回n的阶乘
3     if n < 2:
4         return 1  # 函数出口
5     else:
6         return n * func(n - 1)  # 自己调用自己,降低运算规模
1 def fibonacci(n):
2     # 斐波那契
3     if n in (1, 2):
4         return 1
5     else:
6         return fibonacci(n-1) + fibonacci(n-2)
斐波那契
 1 def find(li, aim, start=0,end=None):
 2     """
 3     二分查找,核心思想: 掐头结尾取中间;前提条件: 有序.
 4     :param li: 有序列表
 5     :param aim: 目标
 6     :param start: 开始位置
 7     :param end: 结束位置
 8     :return:
 9     """
10     end = len(li) -1 if end is None else end
11     mid = (end - start)//2 + start
12     if start <= end:
13         if li[mid] < aim:
14             return find(li, aim, start=mid+1, end=end)
15         elif li[mid] > aim:
16             return find(li, aim, start=start, end=mid-1)
17         else:
18             return mid
19     else:
20         return None
二分查找
 1 # 遍历某文件夹内的所有文件和文件夹
 2 import os
 3 # 树形结构的遍历
 4 def func(file_path, level=0):
 5     file_list = []
 6     lst = os.listdir(file_path)  # 获取到路径下的所有文件
 7     for file in lst:  # 文件名
 8         full_path = os.path.join(file_path, file)  # 获取到文件的全路径
 9         if os.path.isdir(full_path):  # 判断这个路径是否是一个文件夹
10             file_list.extend(func(full_path, level + 1))
11         else:
12             file_list.append((file, level))
13     else:
14         return file_list
遍历文件夹

 

posted @ 2018-09-26 22:40  写bug的日子  阅读(161)  评论(0编辑  收藏  举报