代码之家  ›  专栏  ›  技术社区  ›  ncarrawa

将1添加到i(递归)时出现类型错误

  •  -3
  • ncarrawa  · 技术社区  · 2 年前

    我正在尝试编写一个递归,将列表中项目的乘积求和,模式如下:

    (some_list[i] * some_list[j]) + (some_list[i+1] * some_list[j-1]) +
    (some_list[i+2] * some_list[j-2]) + ........
    

    在i和j之间,每一个数字的极限是一次。
    我相信我已经正确地设置了递归(如果我错了,请纠正我),但是我得到了以下错误:

    TypeError: unsupported operand type(s) for +: 'int' and 'str'
    
    def sum_product(some_list, i, j):
        limit = len(some_list)//2
        if j <= limit:
            return ' '
        else:
            result = some_list[i] + some_list[j]
            return result + sum_product(some_list, i + 1, j - 1)
    print(sum_product([1, 2, 3, 4, 5, 6, 7, 8], 1, 6))
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   Nin17    2 年前

    更改为返回0,并将+更改为*。还应调整限额,以包括指数在i和j之间的所有数字。假设j>我

    def sum_product(some_list, i, j):
        if j < i:
            return 0
        else:
            result = some_list[i] * some_list[j]
            return result + sum_product(some_list, i + 1, j - 1)
    print(sum_product([1, 2, 3, 4, 5, 6, 7, 8], 1, 7))
    

    输出: 86 = 2*8+3*7+4*6+5*5