使用递归查找列表中元素的索引
def index(L,v)
''' Return index of value v in L '''
pass
我需要帮助来用递归实现这个函数。
我对递归还很陌生,所以任何建议都很有帮助!
注意,L
是一个列表,v
是一个值。
9 个回答
1
我猜这可能是作业。
所以你需要理解递归。这里有个例子:
def countdown(n):
if n == 0:
print "Hello World!"
else:
print n
countdown(n-1)
你需要一个起始点,在你的情况下,可能就是第0个元素。
你还需要一个结束点,这个结束点应该是 length - 1
,或者是当你找到那个元素的时候。
这里可以用简单的if else语句,类似于上面提到的倒计时的修改版。
1
还有一种方法:
def rec(l,v, index=0):
try:
if l[index] == v:
return index
except IndexError:
return -1
return rec(l,v,index+1)
2
这样做是可以的
def recursive_index(L, v):
return 0 if L[0] == v else 1 + recursive_index(L[1:], v)
但是这方法挺傻的(而且只有在值存在的时候才有效)
你可以加上 if v not in L: return -1
让它在任何情况下都能工作,但这样做更糟糕。
真的必须用递归吗?