2024-04-19 03:06:57 发布
网友
我用Python编写了以下递归代码:
def suma(i,l): if i == 0: return l[i] else: return suma(i-1,l)+l[i]
每当我通过suma(3,[7,2,3])调用函数并运行它时,就会收到以下错误消息:
suma(3,[7,2,3])
List index out of range on line return suma(i-1,l)+l[i]
这是非正统的,但是您可以调用suma()函数,第一个参数减少1:
suma()
>>> l = [7, 2, 3] >>> suma(len(l)-1, l) 12
但最好这样写:
def suma(l): if len(l) > 1: return suma(l[:-1]) + l[-1] return l[0] >>> suma([7,2,3]) 12 >>> suma(range(1,11)) 55
这样做的好处是根本不需要将列表的长度传递给sum函数—使用len()始终可以获得长度。你知道吗
len()
好的,我假设这里的目的是递归地添加i的第一个l元素并返回结果。如果是这样,这里有一个简洁的方法:
i
l
def suma(i,l): return 0 if i == 0 else suma(i-1,l)+l[i-1]
这相当于:
def suma(i,l): if i == 0: return 0 else return suma(i-1,l)+l[i-1]
这是非正统的,但是您可以调用
suma()
函数,第一个参数减少1:但最好这样写:
这样做的好处是根本不需要将列表的长度传递给sum函数—使用
len()
始终可以获得长度。你知道吗好的,我假设这里的目的是递归地添加
i
的第一个l
元素并返回结果。如果是这样,这里有一个简洁的方法:这相当于:
相关问题 更多 >
编程相关推荐