我写了一个递归函数来查找列表的总和,这是我的代码:
def rsum (eleList):
if len(eleList) == 1:
return eleList[0]
else:
return eleList[0] + rsum(eleList[1:])
但是,现在我想编写一个递归函数来查找列表的最大值和最小值的总和,我不知道应该从哪里开始。有人能给我一些提示吗?
答案 0 :(得分:2)
如果你想编写一个递归函数,你必须弄清楚如何解决这个小问题。您知道此列表的总和是第一个元素加上列表其余部分的总和。如果你有一个清单:
[1,2,3,4,5]
并且你知道最后四个元素的最大值是5
而第一个元素是1
,并且你想要找到总的最大值,你如何以常数来表示操作
答案 1 :(得分:0)
我会在每次迭代中搜索最大值和最小值。如果是这样的话,我会退还金额。
类似的东西:
def rsum(eleList, ans, index):
if index == len(eleList) - 1:
if max(eleList) == eleList[index] or min(eleList) == eleList[index]:
return ans+eleList[index]
else:
return ans
else:
if max(eleList) == eleList[index] or min(eleList) == eleList[index]:
return ans + eleList[index] + rsum(eleList, ans, index + 1)
else:
return rsum(eleList, ans, index + 1)
print rsum([9, 2, 3, 4], 0, 0)
输出:
<强> 11 强>
可能不是最聪明的一个或大多数pythonic但它完成任务。
答案 2 :(得分:-2)
要查找列表中所有元素的总和,请使用sum
函数:
temp = [1,2,3,4]
sum(temp)
#output = 10
如果要查找最小和最大元素的总和,请将列表排序并添加第一个和最后一个元素:
temp = [1,2,3,4]
sorted_list = sorted(temp)
total = sorted_list[0] + sorted_list[-1]
当存在内置功能的可能性时,避免自己动手。