def chooseBest(s):
if len(s) == 2:
c = cmp(s[0], s[1])
if c == -1 or c == 0:
return s[0]
elif c == 1:
return s[1]
else:
return chooseBest(s[1:])
其中“s”是可比较值的列表。
考虑一下chooseBest([x, y, z]) 是否可以返回x。
如果您试图递归地查找可比较值列表中的最大元素,那么应该这样做:
def chooseBest(s):
if not s:
return None
best = chooseBest(s[1:])
return s[0] if s[0] > best else best
甚至更短:
def chooseBest(s):
return max(s[0], chooseBest(s[1:])) if s else None
无论哪种方式,它都适用于内置的可比较数据类型。如果由于某种原因您需要将其与您定义的类型进行比较,请不要忘记将其与以下内容进行比较None
:
chooseBest([1, 2, 5, 3, 4])
=> 5
chooseBest(['a', 'b', 'z', 'c', 'd'])
=> 'z'