【发布时间】:2014-09-03 12:47:30
【问题描述】:
我正在 Python 上实现递归顺序搜索,如下所示:
def search(list1,n,pos):
if n==list1[0]:
return pos
else:
if list1==[]:
return -1
else:
pos=pos+1
list1.pop(0)
return search(list1,n,pos)
def searchCall(n):
anylist=[1,2,3,4,5,6,7,8,9,10]
pos=0
search(anylist,n,pos)
def main():
i=searchCall(8)
print i
if __name__=="__main__":
main()
所以我要做的是尝试在列表中找到元素 n,并且在每次递归调用中,我都会弹出列表的第一个元素,并使用剩余的列表再次调用搜索。问题是当我把这个:
if n==list1[0]:
print pos
它打印找到元素的位置,但是当我更改为:
return pos
它打印无
当没有找到该元素时,它应该返回 -1,而是显示以下错误消息:
if n==list1[0]:
IndexError: list index out of range
有什么帮助吗?
谢谢
【问题讨论】: