有只小跳蛙
因为这是一个递归练习,而不是我们在系统代码中做的事情,所以我会使用描述性代码而不是高效代码,并做类似的事情:def largest(array): if array: head, *tail = array if tail and head < (result := largest(tail)): return result return head return Noneif __name__ == "__main__": from random import choices array = choices(range(100), k=10) print(array, '->', largest(array))输出> python3 test.py[46, 67, 0, 22, 23, 20, 30, 7, 87, 50] -> 87> python3 test.py[83, 77, 61, 53, 7, 65, 68, 43, 44, 47] -> 83> python3 test.py[36, 99, 47, 93, 60, 43, 56, 90, 53, 44] -> 99> 如果您真的需要提高效率,我建议您安全地这样做。具体来说,不公开带有调用者不应该使用的特殊参数的 API ,例如:def my_max(lst, m=None, i=0):因为他们可以为这些额外的参数提供值,这些参数会使您的代码失败,并最终将其归咎于您。同上公开调用者可能调用的内部函数而不是预期的函数:def my_max(lst, m=None, i=0):def my_max_helper(lst, i):不小心调用了my_max_helper()命名不当的参数的虚假值i。相反,我会考虑嵌套您的函数以避免此类调用错误:def largest(array): def largest_recursive(array, index): a = array[index] if len(array) - index != 1: if (b := largest_recursive(array, index + 1)) > a: return b return a if array: return largest_recursive(array, 0) return None