使用递归查找列表中元素的索引

0 投票
9 回答
19737 浏览
提问于 2025-04-16 20:18
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 让它在任何情况下都能工作,但这样做更糟糕。

真的必须用递归吗?

撰写回答