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'是可比值的列表。
答案 0 :(得分:2)
考虑chooseBest([x,y,z])是否可以返回x。
答案 1 :(得分:0)
如果您试图以递归方式找到可比值列表中的最大元素,请按以下步骤操作:
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'