递归,二分法
递归:自己调用自己
1.用递归查找文件:
import os def func(filepath,n): files = os.listdir(filepath) #这是os模块自带的方法,返回文件夹下的所有文件 for file in files: f_d = os.path.join(filepath,file) if os.path.isdir(f_d): print('\t'*n,file) func(f_d,n+1) else: print('\t'*n,file) func('D:\优酷,网易云',0)
while循环二分法实现:
l = [1,2,3,4,5,6,7,8,9,10] left = 0 right = len(l)-1 n=8 while left <= right: mid = (left+right)//2 if l[mid] < n: left +=1 if l[mid] >n: right +=1 if l[mid] == n: print('找到了') print(mid) break else: print('没找到')
递归实现二分法:
l = [1,2,3,4,5,6,7,8,9,10] left = 0 right = len(l)-1 def func(n,left,right): mid = (left + right) //2 if left <= right: if l[mid] >n: right = mid -1 return func(n,left,right)#这里一定要renturn,返回返回值 if l[mid] < n: left = mid +1 return func(n,left,right) if l[mid] == n: print('找到了') return mid else: print('没找到') return -1 ret = func(12,left,right) print(ret)
查找最快实现方法:
l = [1,2,3,4,5,6,7,8,9,10] lst =[] for i in l: lst.append(1) print(lst) n = 10 if lst[n-1] == 1: print('在里边') else: print('不在')

浙公网安备 33010602011771号