【发布时间】:2019-04-10 11:01:12
【问题描述】:
我正在尝试构建一个接收列表并返回 (min, max) 元组的函数。
例如,
[2,1,4,9,4.5]
会回来
(1, 9)
我正在尝试仅使用递归并希望执行此任务而不使用其他使这变得非常容易的东西(例如 min()、max()、sort()、sorted()、loop..等)
到目前为止,我已经能够创建找到最大值的函数
def findmax(alist):
if len(alist) <= 1:
return tuple(alist)
elif len(alist) == 2:
if alist[0] >= alist[1]:
return findmax([alist[0]])
elif alist[0] <= alist[1]:
return findmax([alist[1]])
elif len(alist) > 2:
if alist[0] >= alist[1]:
return findmax([alist[0]] + alist[2:])
elif alist[0] <= alist[1]:
return findmax(alist[1:])
哪个
findmax([2,1,4,9,4.5])
返回
(9,)
还有一个找到最小值的函数(差别不大)
def findmin(alist):
if len(alist) <= 1:
return tuple(alist)
elif len(alist) == 2:
if alist[0] >= alist[1]:
return findmin([alist[1]])
elif alist[0] <= alist[1]:
return findmin([alist[0]])
elif len(alist) > 2:
if alist[0] >= alist[1]:
return findmin(alist[1:])
elif alist[0] <= alist[1]:
return findmin([alist[0]] + alist[2:])
哪个
findmin([2,1,4,9,4.5])
返回
(1,)
有没有办法只使用递归将这两个单独的函数合二为一,以便返回所需的结果
(1, 9)
任何帮助将不胜感激。
【问题讨论】: