经典算法思路及解答
1.求非负数实数的平方跟
问题分析:
#1.需要求出的结果应该是有理数
#2.过程需要有穷步骤
#3.可以分析正常情况下能够得到实数的近似值
#4.误差的设置
问题重新描述:
#对任意非负实数x,求一个非负实数y,使得|y * y - x|<e,其中,e是给定的允许误差
算法分析
#0对给定的正实数x和允许误差e,让变量y取任意正实数值,
#1如果y*y与x足够接近,使得|y * y - x|<e,计算结束,并把y作为结果返回
#2取z=(y+x/y)/2
#3将作为y的新值,回到步骤1
##实现
def sqrt(x):
y = 1
while abs(y * y - x ) > 1e-6:
y = (y + x/y)/2
##测试
sqrt(4)
Out[2]:2.0000000929222947