我不太确定此递归如何工作
def c(s):
'''Docstring omitted.'''
return sum([c(i) for i in s]) if isinstance(s, list) else 1
我不明白以下答案是如何产生的
>>> c(['one', 2, 3.5])
3
>>> c(["one", [2, "three"], 4, [5, "six"]])
6
据我了解,该函数将所有元素放入其各自的列表中,然后添加它们。因此,对于第二个呼叫,它应该是“一个” +(2 +“三个”)+ 4 +(5 +“六个”)。但是,由于您不能对字符串求和,因此这不会产生错误吗?我不确定答案是如何计算的。任何帮助将不胜感激。
最佳答案
它计算树上的叶子(表示为列表中的列表)。
如果s
是一个列表(它正在查看一个非叶节点),它将在每个元素(子树)上调用自身,将结果相加并返回总数。
如果s
不是列表(它是叶节点),则返回1
(无论s
是3.5
还是5
或"six"
,1
是返回的内容) 。
关于python - 了解此递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28313023/