deffind_max(data, index):if index ==len(data)-1:returnTruemax= find_max(data,index+1)ifmax> data[index]:returnmaxelse:return data[index]if __name__ =="__main__":
data =[1,2,3,4444,5,6]print(find_max(data,0))#时间复杂度为n
6
defharm_num(n):if n ==1:return1else:return1/ n + harm_num(n -1)if __name__ =="__main__":print(harm_num(3))# 时间复杂度为n
7
import math
defchange_num(str_num, index):if index ==1:returnint(str_num[-1])else:returnint(str_num[len(str_num)- index])*int(math.pow(10, index -1))+ change_num(str_num, index -1)if __name__ =="__main__":print(change_num("12345",5))# 时间复杂度为n
8
defgood_sum(data, index=0):if2* index >=len(data):return0elif2* index ==len(data)-1:return data[index]else:
total = data[2* index]+ data[2* index +1]return total + good_sum(data, index +1)if __name__ =='__main__':
data =[1,2,3,4,5,6,7,8,9,10]print(good_sum(data))# 时间复杂度为log n
9
defptp(data, index=0,):if index ==len(data)-1:return data[-1], data[-1]max,min= ptp(data, index +1)ifmax< data[index]<min:returnmin,maxelifmin> data[index]andmax> data[index]:returnmax, data[index]elifmin< data[index]and data[index]>max:return data[index],minelse:returnmax,minif __name__ =="__main__":
data =[1,2,66,8,9,100]print(ptp(data,0))# 时间复杂度为n
10
deflog(data):if data ==1:return0if data <=0:raise ValueError("paramter must greater than 0")
num = data //2return1+ log(num)if __name__ =='__main__':print(log(1000))# 时间复杂度为n
11
defis_unique(sets, index=0):iflen(sets)-1== index:returnTrueelse:if is_unique(sets, index +1):for i inrange(index +1,len(sets)):if sets[i]== sets[index]:returnFalsereturnTrueelse:returnFalseif __name__ =="__main__":
data =[1,2,3,4,5,6,1]print(is_unique(data))
12
defrecursive_multiply(m, n, index=0):if index == n:return0else:return m + recursive_multiply(m, n, index +1)if __name__ =="__main__":
m =3
n =2print(recursive_multiply(3,2))
14
defhano(n,a,b,c):if n ==1:print(a,"-->>",c)else:
hano(n-1,a,c,b)
hano(1,a,b,c)
hano(n-1,b,a,c)if __name__ =="__main__":
hano(3,"a","b","c")
15
from itertools import permutations
defrecursive_subset(sets):iflen(sets)==0:return[[]]
subsets =[]
first_elt = sets[0]
rest_list = sets[1:]for partial_subset in recursive_subset(rest_list):
subsets.append(partial_subset)
next_subset = partial_subset[:]+[first_elt]
subsets.append(next_subset)return subsets
if __name__ =="__main__":
data =['a','b','c','d']print(recursive_subset(data))
defmodule_1(datas, odd_num=[], even_num=[], index=0):if index ==len(datas):return[],[]else:
odd_num, even_num = module_1(datas, odd_num, even_num, index +1)if datas[index]%2==0:
even_num.append(index)else:
odd_num.append(index)return odd_num, even_num
defmodule_2(datas):
odd_num, even_num = module_1(datas)
new_data =list()for index in even_num:
new_data.append(datas[index])for index in odd_num:
new_data.append(datas[index])return new_data
if __name__ =="__main__":
x =[0,11,23,22,1,2,3,4,5,6,28,11,23,]print(module_2(x))
defFindPair(data,i,j,k):if i == j:returnFalseelse:if data[i]+data[j]< k:return FindPair(data,i+1,j,k)else:if data[i]+data[j]> k:return FindPair(data,i,j-1,k)else:returnTrueif __name__ =="__main__":
data =[2,3,1,3,4,22,31,65]
k =5
data.sort()print(FindPair(data,0,len(data)-1,90))
22
defrecursive_multiply(m, n):
i =0
total =1while i < n:
total *= m
i +=1return total
if __name__ =="__main__":
m =3
n =2print(recursive_multiply(3,2))
23
import re
import os.path
deffind(paths):
total =0if os.path.isdir(paths):for filePath in os.listdir(paths):
newPath = os.path.join(paths,filePath)if newPath =="F:\\python_code\\venv":continue
total += find(newPath)
pattern = re.compile(r".*?(\.py)")if pattern.findall(paths):print(paths,os.path.getsize(paths))return1else:return total
if __name__ =="__main__":
path ='F:\\python_code'print(find(path))
26
defhano(k, a, b, c):if k ==1:print(a,"-->>", c)else:
hano(k -1, a, c, b)
hano(1, a, b, c)
hano(k -1, b, a, c)if __name__ =="__main__":
hano(3,'a','b','c')
1def find_max(data, index): if index == len(data)-1: return True max = find_max(data,index+1) if max > data[index]: return max else: return data[index]if __name__ == "__main__": data = [1, 2, 3, 4444, 5, 6