# -*- coding: utf-8 -*-
'''
Python程序员面试算法宝典---解题总结: 第6章 基本数字运算 6.13 如何在不能使用库函数的条件下计算n的平方根
题目:
给定一个数n,求出它的平方根,比如16的平方根是4.要求不能使用库函数。
分析:
最简单的方式,就是n进行累加,每次计算i*i <= n, (i+1)*(i+1) > n,
则i就是数字n的平方根。
为了能快速增加i的值而不是每次加1,
可以选择,二分查找,限定查找范围是0~n/2
关键:
1 二分查找尤其需要注意一种情况
while low < high:
low = high - 1
此时会造成无限循环,
当low = high - 1 需要跳出循环再计算
2 书上解法
通过近似值获取。第一个近似值为1,接下来的近似值通过
Ai+1 = (Ai + n/Ai)/2
为什么?
3 没有想到
没有想到公式:
Ai+1 = (Ai + n/Ai)/2
参考:
Python程序员面试算法宝典
'''
def isOk(i, n):
value = i * i
value1 = (i + 1) * (i + 1)
# 找到了,返回结果
if value <= n and value1 > n:
return True
else:
return False
def rootOfN(n):
if n < 0:
return -1
low = 0
high = n / 2 + 1
while low < high:
diff = high - low
Python程序员面试算法宝典---解题总结: 第6章 基本数字运算 6.13 如何在不能使用库函数的条件下计算n的平方根
最新推荐文章于 2022-07-29 21:00:28 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)