[英]how can I exclude zero from an recursion python program following
def multipl_rec(l, n):
if (n == 1) and (n!=0):
multiple = l[0]
else:
multiple = multipl_rec(l,n-1) * l[n-1]
return multiple
如果我进入,我会得到
>>>l = [1,-2,5,0,-5]
>>>multipl_rec(l, len(l))
0
但我想得到 50 具有相同的值,为此我需要排除 0
对于初学者来说, n
的这种用法有点令人困惑。 它唯一的工作是指示列表的虚拟结尾,通过简单地截断列表并完全省略n
作为单独的参数来替换它会更容易:
def multipl_rec(l):
if len(l) == 1:
multiple = l[0]
else:
multiple = multipl_rec(l[:-1]) * l[-1]
return multiple
接下来,您可以讨论到底要如何省略0
值; 试图在递归 function 中跳过它们会使事情变得有些复杂,所以让我们将任何0
替换为1
:
def multipl_rec(l):
if len(l) == 1:
multiple = l[0] or 1
else:
multiple = multipl_rec(l[:-1]) * (l[-1] or 1)
return multiple
为了减少冗余,让我们将基本情况不是len(l) == 1
,而是len(l) == 0
:
def multipl_rec(l):
if not l:
return 1
return multipl_rec(l[:-1]) * (l[-1] or 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.