我目前正在尝试编写一个带有两个整数参数的递归函数,并且必须采用从第一个整数到最后一个整数的所有值,将列表连续分成两半,以便将每一边相乘并找到所有整数的乘积。整数值。我目前输入了以下代码:

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/

10-11 20:30