递归python函数中的对象求和
我需要在一个函数中求和对象(字符串、整数等)(不创建其他函数,可以在一个函数中完成)。它应该是这样工作的:当给定递归python函数中的对象求和,python,function,recursion,sum,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)
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='
,然后返回它,因为每次有递归调用时它都会被删除。另外,我不想要全局变量(如果有人想到的话)。也许我只是愚蠢,看不出这是一件简单的事情,如果是这样的话,请原谅我
谢谢你的回答 常见的累积模式是:
result = <init value>
for item in argument:
result = result <operator> item
return result
请注意,type(x)==y
在Python中是不受欢迎的,被认为是更好的样式
家庭作业:扩展函数,使其也适用于以下参数:
print my_sum([[['s'],'ta'],('c',('k')), {('over'), ('flow')}])
常见的累积模式是:
result = <init value>
for item in argument:
result = result <operator> item
return result
请注意,type(x)==y
在Python中是不受欢迎的,被认为是更好的样式
家庭作业:扩展函数,使其也适用于以下参数:
print my_sum([[['s'],'ta'],('c',('k')), {('over'), ('flow')}])
我这里有一种似曾相识的感觉。可能的重复您需要另一个参数到您的my_sum
函数中,尝试一个累加器值,这样您就可以返回该值,而不是返回None
def my_sum(array,acc=None):…
我在这里有一种似曾相识的感觉。如果您的my_sum
函数需要另一个参数,请尝试使用累加器值,这样您就可以返回该值,而不是返回None
def my_sum(array,acc=None):…
即使这样,isinstance
也应该少用,例如,如果输入是一个tuple
,它也会失败,即使它是完全有效的(我想你接下来的问题就是为了指出这一点),即使这样,isinstance
也应该少用,例如,如果输入是一个元组
,即使它完全有效,它也会失败(我假设您的后续问题就是为了指出这一点)