这次是简单的First Bad Version。方法是使用2分法来缩小范围。isBadVersion函数可以自己定义来帮助测试。代码如下:
def firstBadVersion(n):
# import sys
# sys.setrecursionlimit(500)
global first
first = 1
def check(n):
global first
if n == 1:
first = 1
else:
if n - first == 1:
if isBadVersion(first):
first = first
else:
first = first + 1
else:
if isBadVersion((n + first) / 2):
print '111111'
n = (n + first) / 2
print n,first,'6666'
return check(n)
else:
first = (first + n) / 2
print first, '4444444'
return check(n)
check(n)
return first
def isBadVersion(n):
if n >= 1702766719:
return True
print firstBadVersion(2126753390)