迭代法计算平方根(难度系数:2颗星)
来源:互联网 发布:google pixel手机 知乎 编辑:程序博客网 时间:2024/05/18 23:55
输入1个正数,求其平方根(不能使用sqrt库函数)
PS:参考代码中给出了两种迭代方式进行比较:1. 公式迭代 2. 二分迭代
参考代码:
#include <stdio.h>double GetAbsoluteValue(double num){ return num > 0 ? num : -num;}double GetSqrt2(double num){ //此题进行一下扩展,原题是输入正整数,为了更加通用,改成输入一个正数 //对整个结果空间进行二分搜索 const double eps = 1e-13;//定义结果的精度 double low, high, res; if (num < 1)//这里要考虑一下正数小于1的情况,二分的初值范围 { low = num; high = 1; } else { low = 0; high = num; } res = (low + high) / 2; while (GetAbsoluteValue(res * res - num) >= eps) { double dd = GetAbsoluteValue(res * res - num); if (res * res < num) low = res; else high = res; res = (low + high) / 2; } return res;}double GetSqrt(double num){ //此题进行一下扩展,原题是输入正整数,为了更加通用,改成输入一个正数 const double eps = 1e-11;//定义结果的精度 double x = 0, y = num / 2; while (GetAbsoluteValue(y - x) >= eps) { x = y; y = (x + num / x) / 2; } return x;}int main(){ double num; scanf_s("%lf", &num); printf("------------------------------方法1:----------------------------------------\n"); printf("sqrt(%lf)=%.6lf\n", num, GetSqrt(num)); printf("\n"); printf("------------------------------方法2:----------------------------------------\n"); printf("sqrt(%lf)=%.6lf\n", num, GetSqrt2(num)); return 0;}
运行结果:
4 0
- 迭代法计算平方根(难度系数:2颗星)
- 计算平方根(牛顿迭代法)
- 牛顿迭代法计算平方根
- 加减乘除24点(难度系数:2颗星)
- 数列的逆序数对(难度系数:2颗星)
- 计算器(难度系数:3颗星)
- 模拟计算机计算源码、反码、补码(难度系数:1颗星)
- 计算π的值(难度系数:半颗星)
- 用迭代法计算某个数字的平方根
- 拼音读数字(难度系数:1颗星)
- 输出菱形图案(难度系数:1颗星)
- 随机生成数字放入数组(难度系数:1颗星)
- 找规律输出正方形(难度系数:2)
- 算法1.1 最大公约数(欧几里得)&判定素数&计算平方根(牛顿迭代法)
- leetcode Two Sum 2.1 难度系数2
- leetcode Reverse Integer 2.2 难度系数2
- leetcode Palindrome Number 2.4 难度系数2
- leetcode Valid Parentheses 2.8 难度系数2
- Ext.query与Ext.select 的用法
- 5种方法提高网站的登录框设计体验
- (28)单链表的两种反转方法
- 架构漫谈(八):从架构的角度看如何写好代码
- router配置
- 迭代法计算平方根(难度系数:2颗星)
- Codeforces 369E Valera and Queries【逆向思维+离线+树状数组】好题!好题!好题!
- Jetson TX1开发笔记(三):开发利器-Nsight Eclipse Edition
- angular url过滤器 解析识别url
- QT信号槽
- 剑指Offer的斐波那契数列的循环解决方案
- Jmeter 接口测试 -学习笔记
- Myeclipse 中运行selenium java代码配置
- curl