使用Recursion:Python在列表中添加最小和最大数字

时间:2015-06-26 04:05:17

标签: python list recursion

我写了一个递归函数来查找列表的总和,这是我的代码:

def rsum (eleList):
    if len(eleList) == 1:
        return eleList[0]
    else:
        return eleList[0] + rsum(eleList[1:])

但是,现在我想编写一个递归函数来查找列表的最大值和最小值的总和,我不知道应该从哪里开始。有人能给我一些提示吗?

3 个答案:

答案 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]

当存在内置功能的可能性时,避免自己动手。