已尝试:
def maxed(array):
if len(array) == 2:
return array[0] if array[0] > array[1] else array[1]
submax = maxed(array[1:])
return array[0] if array[0] > submax else submax
结果:如预期,即从列表中返回最大值。
问题:无法理解递归情况,如果len(数组)!=2.这里的代码是怎么工作的?
如果是len(array) != 2
,则递归开始。maxed(array[1:])
向下传递一个比当前帧短一个元素的列表,因此数组将收缩,直到最终达到len(array) == 2
的基本情况。
但是,请注意,这个实现有一个重要的错误:它不能处理array
以0或1元素开头的情况。