题解 | #求解立方根#
求解立方根
http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
a = float(input())
if a>0:
isp = 1
else:
isp = 0
a = abs(a) # 将输入转为正数,方便计算,前面已经记录了正负信息
def ares(amin,amax,a):
ahalf = (amin+amax)/2
if ahalf**3-a<0: # 二分法的中间值比立方根小
if ((a-ahalf**3)/a)<0.001: # 输出要满足的条件
if isp==1:
print('{:.1f}'.format(ahalf))
else:
print('{:.1f}'.format(-ahalf))
else:
ares(ahalf,amax,a)
elif ahalf**3-a>0: # 二分法的中间值比立方根大
if ((ahalf**3-a)/(ahalf**3))<0.001:
if isp==1:
print('{:.1f}'.format(ahalf))
else:
print('{:.1f}'.format(-ahalf))
else:
ares(amin,ahalf,a)
else:
if isp==1:
print('{:.1f}'.format(ahalf))
else:
print('{:.1f}'.format(-ahalf))
if a==1:
if isp==1:
print('{:.1f}'.format(a))
else:
print('{:.1f}'.format(-a))
elif a>1:
ares(0,a,a)
else:
ares(0,1,a) # 0-1之间的数的立方根要在(0,1)区间内找