【发布时间】:2020-02-06 11:18:56
【问题描述】:
我刚开始学习 python,有一些我似乎无法弄清楚的递归问题。最讨厌的是这个:
我需要构建一个函数ind(e,L),其中e 是一个int,L 是一个列表。
输入e 如果它在列表中,输出需要是它的索引
例如:
ind(42,[0,14,52,42,15]) -> 3
这是我到目前为止编写的代码,但我得到的索引始终为 0。有人可以向我解释我做错了什么吗?
def location(e,L):
if L == []:
return False
elif e == L[0]:
A = L[:-1].index(e)
return A
else:
return location(e,L[1:])
print(location(14,[1,2,14,1]))
谢谢:)
【问题讨论】:
-
首先,如果练习的目的是学习递归和自己实现定位功能,那为什么要使用.索引(这正是你想要的位置做的)里面?如果目标不是自己实现,为什么不直接使用索引?
-
如果元素存在则完成递归的唯一情况是
e == L[0]。那么你怎么能期望返回 0 以外的东西呢?
标签: python python-3.x list recursion