我写了两个函数来计算一个数字的第 n 个根。一种使用线性搜索,另一种使用二等分搜索。但是,当我尝试给他们打电话时,他们俩都有问题。它只是说我指定的数字不能被带到那个根。我很困惑,无法说出我做错了什么。有人有想法吗?
def rootBisect(root, num):
low = 0.0
high = num
ans = (high + low)/2.0
while ans ** root < abs(float(num)):
if ans ** root < num:
low = ans
else:
high = ans
ans = (high + low)/2.0
if ans ** root != abs(num):
print '%d cannot be taken to %d root.' % (num, root)
else:
if num < 0:
ans = -ans
print '%d root of %d is %d.' % (root, num, ans)
return ans
def rootLinear(root, num):
ans = 0
while ans ** root < abs(float(num)):
ans += 0.1
if ans ** root != abs(num):
print '%d cannot be taken to %d root.' % (num, root)
else:
if num < 0:
ans = -ans
print '%d root of %d is %d.' % (root, num, ans)
return ans
rootBisect(2, 16)
rootLinear(2, 16)