向 i 加 1 时输入错误(递归)
Type error when adding 1 to i (Recursion)
我正在尝试编写一个递归,对列表中项目的乘积求和,模式如下:
(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))
改为return0,把+改为*。还应调整限制以包括索引在 i 和 j 之间的所有数字。假设 j > i.
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
我正在尝试编写一个递归,对列表中项目的乘积求和,模式如下:
(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))
改为return0,把+改为*。还应调整限制以包括索引在 i 和 j 之间的所有数字。假设 j > i.
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