所以我试着在一些程序上运行这个代码,并且由于某种原因它只能在一些程序上运行。在大多数情况下,递归函数失败,并从一个基本情况给我一个随机值。我希望得到一些帮助,找出如何改进它。该代码适用于我们正在学习TADS的课程,因此我手动完成了“树”代码,但问题似乎并不存在,只是在最大化(自我)功能。
class ArvBin:
def __init__(self,valor):
self.item = valor
self.esq = None
self.drt = None
def mostra(self,tab=0):
print( " "*tab+str(self.item))
if self.esq != None:
self.esq.mostra(tab+3)
if self.drt != None:
self.drt.mostra(tab+3)
def maximo(self):
if self.esq==None and self.drt==None:
return self.item
if self.drt==None and self.esq!=None:
return self.esq.item
if self.esq==None and self.drt!=None:
return self.drt.item
left_min = self.esq.maximo()
right_min = self.drt.maximo()
return max(left_min, right_min, self.item)
def ArvDeLista(L):
if L==[]:
return None
t=ArvBin(L[0])
meio=1+(len(L)-1)//2
t.esq=ArvDeLista(L[1:meio])
t.drt=ArvDeLista(L[meio:])
return t