第四章 递归
代码粗糙,望大佬指出方便改进
def recursion(li
,front
,rear
):
if front
==rear
or front
+1==rear
:
return max(li
[rear
],li
[front
])
return max(recursion
(li
,front
,int((front
+rear
)/2)),recursion
(li
,int((front
+rear
)/2)+1,rear
))
print('空间复杂度为n;\n时间复杂度为log2(n^2)\n'+
'过程:log2(n)+log2(n/2)+log2(n/2/2)+···\n'+
'=log2(n)*(1/2+1/2/2+1/2/2/2+···)\n'
'=log(n)*lof(n)')
def text6(n
):
if n
==1:
return 1
return text6
(n
-1)+1/n
def text7(s
,f
,l
):
if f
==l
:
return 0
return text7
(s
,f
+1,l
)+int(s
[f
])*10**(l
-f
-1)
def text8():
print('n/2+n/2/2+···+n/(2^logn)\n=(n/2)*(1+1/2+1/4+1/(2^logn))\n=n/2*log(logn)\n=nlogn')
def text9(li
,f
,r
):
if f
==r
or f
+1==r
:
return max(li
[f
],li
[r
]),min(li
[f
],li
[r
])
front
,rear
=text9
(li
,f
,int((f
+r
)/2)),text9
(li
,int((f
+r
)/2+1),r
)
return max(front
[0],rear
[0]),min(front
[1],rear
[1])
def text10(num
,res
=0):
if num
==1:
return res
return text10
(num
//2,res
+1)
def text11(li
,f
,m
,r
):
if f
==r
:
return True
elif m
==r
+1:
return text11
(li
,f
+1,f
+2,r
)
elif li
[f
]==li
[m
]:
return False
else:
return text11
(li
,f
,m
+1,r
)
def text12(m
,n
):
if n
==1:
return m
t
=text12
(m
,n
//2)
if n
%2==1:
return t
+t
+m
else:
return t
+t
def text13_(m
):
if m
==0:
return 0
a
=text13_
(m
-1)+m
print('-'*m
)
b
=text13_
(m
-1)
return a
+b
def text13(c
):
print(text13_
(c
),2**(c
+1)-c
-2)
def text14(n
,a
,b
,c
):
if n
==1:
print(a
,'-->',c
)
else:
text14
(n
-1,a
,c
,b
)
text14
(1,a
,b
,c
)
text14
(n
-1,b
,a
,c
)
def text15(lis
,res
,r
,floor
=1):
if floor
== r
+1:
return res
elif floor
==1:
res
[floor
]=lis
return text15
(lis
,res
,r
,floor
+1)
else:
temp
=[]
for i
in res
[floor
-1]:
if i
[-1]!=lis
[-1]:
for j
in range(lis
.index
(i
[-1])+1,r
):
temp
.append
(i
+lis
[j
])
res
[floor
]=temp
return text15
(lis
,res
,r
,floor
+1)
def text15_():
a
=dir()
print(list(text15
(['1','2','3','4','5'],a
,5)))
def text16(s
,n
):
if n
==0:
return ''
return text16
(s
,n
-1)+s
[-n
]
def text17(s
,n
):
if n
==len(s
)//2-1:
return True
if s
[len(s
)-n
-1]!=s
[n
]:
return False
return text17
(s
,n
-1)
def text18(s
,n
,f
=0,y
=0):
if n
==0:
return f
<y
elif s
[n
] in ['a','e','i','o','u','A','E','I','O','U']:
return text18
(s
,n
-1,f
,y
+1)
else:
return text18
(s
,n
-1,f
+1,y
)
def text19(s
,n
,res
=dir()):
if n
==-1:
return res
if s
[n
]%2==1:
res
['r'].append
(s
[n
])
else:
res
['f'].append
(s
[n
])
return text19
(s
,n
-1,res
)
def text20(l
,k
,n
,f
=[],r
=[]):
if n
==-1:
return f
+r
if l
[n
]<=k
:
f
.append
(l
[n
])
else:
r
.append
(l
[n
])
return text20
(l
,k
,n
-1,f
,r
)
'''先分半查询,找到二倍元素值大于所需要的值然后在这些值中向前找小数'''
def text21(li
,key
,f
=0,l
=0,sec
=True,res
=[]):
if f
==len(li
):
return res
if li
[f
]*2<=key
:
return text21
(li
,key
,(f
+len(li
)-1)//2+1,f
,sec
,res
)
elif li
[f
]*2>key
and li
[f
-1]*2>key
and sec
:
return text21
(li
,key
,(f
+l
)//2,l
,sec
,res
)
elif li
[f
]*2>key
and li
[f
-1]*2<=key
and sec
:
return text21
(li
,key
,f
,f
-1,False,res
)
else:
for i
in range(l
,-1,-1):
if li
[f
]+li
[i
]==key
:
res
.append
((li
[f
],li
[i
]))
return text21
(li
,key
,f
+1,i
,False,res
)
elif li
[f
]+li
[i
]<key
:
return text21
(li
,key
,f
+1,i
,False,res
)
def text22(num
,p
):
li
=[]
su
=num
if p
==0:
print(0)
return 0
while p
!=1:
temp
=p
//2
li
.append
(p
-temp
*2)
p
=temp
for i
in range(-1,-(len(li
)+1),-1):
su
*=su
su
*=(num
**li
[i
])
print(su
)
def text23(p
,t
=0):
import os
if os
.path
.isdir
(p
):
print(' '*t
+'#'+p
)
for filename
in os
.listdir
(p
):
chilepath
=os
.path
.join
(p
,filename
)
text23
(chilepath
,t
+1)
else:
print(' '*t
+'*'+p
)
def text24(k
,L
,U
):
for i
in U
:
L
.append
(i
)
U
.remove
(i
)
text24
(k
,L
,U
)
if k
==L
:
print(L
)
return
L
.remove
(i
)
U
.add
(i
)
def text25(c
):
if c
==1:
print('-')
else:
li
=[]
for i
in range(1,c
+1):
li
.append
(i
)
li
.extend
(li
[:-1])
for i
in li
:
print('-'*i
)
def text26(n
,a
,b
,c
):
if n
==1:
print(a
,'->',c
)
else:
text26
(n
-1,a
,c
,b
)
text26
(1,a
,b
,c
)
text26
(n
-1,b
,a
,c
)
def text27(p
):
import os
l1
=[]
l2
=[]
for i
in os
.listdir
(p
):
if os
.path
.isdir
(p
+'/'+i
):
l1
.append
(i
)
else:
l2
.append
(i
)
return p
,l1
,l2
仅供参考,并非标准答案,标准答案只提供给教师,学者难以获取
如有问题可留言或私信,大家一起学习
转载请注明原文地址:https://ipadbbs.8miu.com/read-17015.html