【发布时间】:2017-02-26 03:50:01
【问题描述】:
我正在 python 中实现 二分搜索 算法,在第二个版本的函数中我必须(除了根据元素的存在与否返回真或假)计数算法完成的操作(比较)的数量取决于我正在使用的列表的长度并返回它。
但是,我的函数是递归的,自然我必须将计数器变量(将在每次操作时递增)初始化为零。问题是这个变量在每次递归调用时都会取零值,因此它不会给我正确的值。我想到了一个全局变量,但我不知道如何使用它。
这是我的函数的代码:
def trouve(T, x) :
if len(T) == 0 :
return False
mid = len(T) // 2
if T[mid] == x :
return True
if len(T) == 1 and T[0] != x :
return False
else :
if x > T[mid] :
return trouve(T[mid:], x)
else :
return trouve(T[:mid], x)
【问题讨论】:
-
唯一算作比较的操作是
x > T[mid]?什么是 - 根据您的比较? -
操作数和 ==
-
为什么不定义一个global var (gasp) 并增加它?
-
你也可以试试"static"
-
@bytesized 啊是的,你是对的。我修改了我的建议以包含一个链接
标签: python algorithm recursion