使用结束索引的递归线性搜索方法


def searchletter(letterdata,eIndex,letter):
found_list=[]
if eIndex==-1:
return found_list
elif letterdata[eIndex]==letter:
found_list.append(letterdata[eIndex])
return searchletter(letterdata,eIndex-1,letter)
else:
return searchletter(letterdata,eIndex-1,letter)

letterdata=['a','b','a']
print(searchletter(letterdata,len(letterdata)-1,'a'))

Expected Output:
['a','a']

你好,我真的知道为什么我得到一个空名单。这是因为当我调用函数内部的函数时,它会使found_list再次为空,那么有没有什么方法可以让代码在第一次执行found_list=[]后不读取它?

def searchletter(letterdata,eIndex,letter,found_list):
if eIndex==-1:
return found_list
elif letterdata[eIndex]==letter:
found_list.append(letterdata[eIndex])
return searchletter(letterdata,eIndex-1,letter,found_list)
else:
return searchletter(letterdata,eIndex-1,letter,found_list)

letterdata=['a','b','a']
print(searchletter(letterdata,len(letterdata)-1,'a',[]))

每次调用函数时都要创建一个列表,要么需要一个不断追加元素的全局列表,要么可以将列表作为参数传递。

最新更新