lister=[4,5,1,2,3,6]
i=0
def Search(arr):
if arr[i]==3:
return i
else:
if i>=0 and i<=(len(arr)-2):
i+1
return Search(arr)
else:
return -1
print(Search(lister))
在python中使用递归进行线性搜索。
我不知道为什么它不工作。
3条答案
按热度按时间qvtsj1bj1#
有两个主要问题。
第一个是你没有在任何地方增加
i
。i+1
不修改i
,只是返回你没有放在任何地方的i+1
的值。要增加i
,你应该使用i += 1
。第二个原因是在Search函数中没有使用外部定义的
i
变量。要解决这个问题,您可以在方法的开头将其声明为全局变量,或者将其作为参数传递给函数。
全局方法(不太可取):
和参数法(这将是更可取的):
wd2eg0qa2#
您没有递增
i
变量。您有i+1
,但没有将其赋值给i
。您应该有i=i+1
或i+=1
作为缩写。由于i
不变,因此此递归调用函数无限循环。2w2cym1i3#
与其显式测试索引是否在范围内,为什么不使用异常处理呢?您还可以通过这种方式管理任何潜在的递归"溢出"。例如: