在递归python函数中求和对象

时间:2015-03-03 20:55:53

标签: python function recursion sum

我需要在一个函数中对对象(字符串,整数等)求和(创建其他函数,它可以在一个函数内完成)。它应该以这种方式工作:当给定my_sum([[['s'],'ta'],['c',['k']]])时,它应该返回'stack'

我想出了这个:

def my_sum(array):

    if not array: #empty array
        return None

    else:

        for item in array:

            if type(item) == list:
                my_sum(item)

            else:
                print(item)

它当然没有做它应该做的事情,我只是在试图想出一些东西。上面的代码返回:

s
ta
c
k

我认为我没有那么远,因为我有我需要的东西,但问题是如何总结这些项目?我无法在函数中的任何位置写result = '',然后return,因为每次有递归调用时它都会被删除。此外,我不想要global变量(如果有人会想到这一点)。也许我只是愚蠢而且看不出这是一件简单的事情,请原谅我,如果是这样的话。

谢谢你的每一个答案!

1 个答案:

答案 0 :(得分:4)

常见的累积模式是:

result = <init value>
for item in argument:
     result = result <operator> item
return result

(这可以写得更简洁,但现在不是重点)。

适用于您的问题:

def my_sum(items):
    result = ''
    for item in items:
        if type(item) == list:
            result += my_sum(item)
        else:
            result += item
    return result

请注意type(x) == y在Python中不受欢迎,isinstance被认为是更好的风格。

家庭作业:扩展功能,使其适用于这些参数:

print my_sum([[['s'],'ta'],('c',('k')), {('over'), ('flow')}])
相关问题