好吧,所以我是编程新手,我正在参加计算机科学的入门课程。我们正在使用Python 3.6,并且有一个我们的教授告诉我们要做的练习。为什么“返回0”在我的代码中起作用?
基本上我们必须编写一个函数,使输入是一个列表,我们必须返回值的总和。如果有一个列表作为我们初始列表的一个元素,我们必须对其中的所有数字进行求和。
我的一个朋友帮我和代码工作,但我不明白为什么它会工作。
下面的代码:
def f(L):
sum = 0
if len(L)==0:
return 0
if isinstance(L[0], int):
sum = sum + L[0]
elif isinstance(L[0], list):
sum = sum + f(L[0])
L.remove(L[0])
return sum + f(L)
和输入的一个例子是:
print(f([[99777634], [97179966, 91871251], [99887343, 97636420], [92431849]]))
有人可以解释我是如何“回归0”的作品,为什么它的工作原理?
我不确定,我理解这个问题。该代码部分通过检查列表是否为空(其长度为0)并返回0来工作。这是正确的,因为空列表的总和实际上是0. – sepp2k
看起来像递归基本情况,因此您可以终止递归。也看起来不是一个很好的方法来做你正在做的事情,因为你可以迭代列表并计算总和而不使用标记。 – birryree