gpt4 book ai didi

python - 递归添加两个整数列表 - python

转载 作者:太空宇宙 更新时间:2023-11-03 13:31:12 24 4
gpt4 key购买 nike

我有这两个整数列表:

A=[1,5,3]
B=[4,5,9,8]

我想使用递归方法 o 得到这两个的和,额外的整数只是附加到结果。所以我应该得到:

[5,10,12,8]

这是我的功能:

def sum(A,B):
a = len(A)
b = len(B)

if a == 0 :
return B
elif b == 0 :
return A
elif a >= b :

return A[0] + B[0] + sum(A[1:b],B[1:])+ **list1[(b+1):]**
else:
return A[0] +B[0] + sum(A[1:],B[1:a])+**list2[(a+1):]**

对于“****”粗体部分,我不确定我是否正确,而且,当我运行程序时,我得到了"返回 A[0] + B[0] + sum(A[1:b],B[1:])+A[(b+1):]

TypeError: unsupported operand type(s) for +: 'int' and 'list'"

最佳答案

您的递归案例不正确。您应该返回一个列表总和,这意味着您的 A[0] + B[0] 必须作为单个元素列表添加。基本上,这就是您正在做的:

In [559]: 1 + [123]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-559-01aa05245fd1> in <module>()
----> 1 1 + [123]

TypeError: unsupported operand type(s) for +: 'int' and 'list'

这是你应该做的:

In [560]: [1] + [123]
Out[560]: [1, 123]

这是递归案例的工作版本,稍微整理了一下。

In [555]: def sum(A, B):
...: if not len(A):
...: return B
...: elif not len(B):
...: return A
...:
...: return [A[0] + B[0]] + sum(A[1:], B[1:])
...:

In [556]: sum(A, B)
Out[556]: [5, 10, 12, 8]

有趣的是,您可以将此函数缩短为一行。

In [557]: def sum(A, B):
...: return A if not len(B) \
else (B if not len(A) \
else ([A[0] + B[0]] + sum(A[1:], B[1:])))
...:

In [558]: sum(A, B)
Out[558]: [5, 10, 12, 8]

关于python - 递归添加两个整数列表 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46870115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com