-2
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”是可比较值的列表。

4

2 回答 2

2

考虑一下chooseBest([x, y, z]) 是否可以返回x。

于 2013-05-31T01:05:24.913 回答
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'
于 2013-05-31T01:14:51.773 回答