我试图在python中编写一个递归函数,但它不返回整数类型,而是返回一个非类型。我知道还有其他一些问题,但对我来说没有一个解决方案。 这是代码:
class t:
def search(self, globina, board):
board.legals = board.legal()
bestMove = 0
if(globina == 0):
return board.evaluation()
elif board.turn == False:
bestMove = -9999
for i in range(0, len(board.legals)):
board.move(board.legals[i])
board.display()
bestMove = max(bestMove, self.search(globina-1, board))
board.undo()
return bestMove
else:
bestMove = 9999
for i in range(0, len(board.legals)):
board.move(board.legals[i])
board.display()
bestMove = min(bestMove, self.search(globina-1, board))
board.undo()
return bestMove
z = t()
z.search(globina, board)
答案 0 :(得分:0)
您的递归方法(因为它出现在编辑过的问题中)正在做正确的事情,因为它在所有情况下都使用return
。
这意味着None
值不能归因于递归函数本身,而是它在某个基础情况下返回的值。对于您的功能,这意味着board.evaluation()
至少在某些时候会返回None
。
在Python 3中,我希望在任何递归情况下都会导致异常,因为min
和max
会阻塞None
值(因为{ {1}}与任何事物都不具有可比性,包括其本身。然而,在Python 2中,所有对象都是可比较的,尽管在不同类型之间进行比较可能没有任何特定含义。默认行为是按字母顺序比较类名(因此所有None
和int
实例都小于所有float
实例,这些实例少于所有str
s),但是如果我没记错,tuple
比其他所有值都要小。