【发布时间】:2018-07-04 21:29:19
【问题描述】:
我在这个更高级的场景中遇到了麻烦。
我明白了:
def max(alist):
if len(alist) == 1:
return alist[0]
else:
m = max(alist[1:])
return m if m > alist[0] else alist[0]
仅使用递归查找列表中的最大数。这重复了每次我得到的慢慢缩小列表的功能。我的问题是我需要创建一个返回第二个最小数字的函数。我不明白如何做到这一点,因为您需要将每个项目与列表中的其余项目进行比较。我将如何仅使用递归而不使用内置函数或 for 循环来做到这一点?
【问题讨论】:
-
函数名在风格上应该是小写;)哦,你不应该覆盖内置的
list函数 -
我建议不要创建一个处理
2nd最大的特殊情况的函数,而是看看找到kth最大的,它可以通过@给你2nd最大987654321@,因为您的解决方案需要递归。 -
修复了样式错误。我仍然不知道如何启动这个第二小的函数。如果重要的话,我只能输入一个列表。