Python程序员面试算法宝典---解题总结: 第6章 基本数字运算 6.13 如何在不能使用库函数的条件下计算n的平方根

本文总结了Python程序员在面试中遇到的算法问题,聚焦于第六章基本数字运算的第6.13节,探讨如何在不依赖库函数的情况下,有效地计算一个数n的平方根。这对于理解数值计算原理和提升编程技巧至关重要。
摘要由CSDN通过智能技术生成
# -*- 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
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值