我目前正在尝试编写一个带有两个整数参数的递归函数,并且必须采用从第一个整数到最后一个整数的所有值,将列表连续分成两半,以便将每一边相乘并找到所有整数的乘积。整数值。我目前输入了以下代码:
def multiply(n, m):
lis = range(n, m)
half = len(lis)//2
leftSide = lis[:half]
rightSide = lis[half+1:]
if n == 0 or m == 0:
return 0
elif len(lis) == 0:
return 0
elif len(lis) == 1:
return lis[0]
return multiply(leftSide) * multiply(rightSide)
但是,当我运行代码时,出现以下错误:
TypeError:multiple()缺少1个必需的位置参数:'m'
任何意见或任何形式的帮助将不胜感激。
最佳答案
尝试这样的事情。您不必通过这种方式创建额外的内存。
def multiply(lo, hi):
if lo == hi:
return lo
else:
mid = (lo + hi) // 2
return multiply(lo, mid) * multiply(mid + 1, hi)
product = multiply(1, 4) # 1 * 2 * 3 * 4
print(product) # 24
关于python - 递归地将列表分成两半以查找所有数字的乘积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51714546/