标签:查找 大于 最大值 class 计算 break log sqrt tmp
开方算法在语言的库函数里面都有,且会比下面讲到的快很多。
第一:二分查找法。
算法逻辑:
代码如下:
1 double sqrt(double z) 2 { 3 double low =0; 4 double high = 0; 5 double x = 0; 6 if(z==1) 7 { 8 x = 1; 9 return x; 10 } 11 if(z<1) 12 { 13 low = z; 14 high = 1; 15 } 16 if(z>1) 17 { 18 low = 1; 19 high = z; 20 } 21 double eps = 0.0000001; 22 while(1) 23 { 24 double mid = (low+high)/2; 25 double tmp = mid*mid; 26 if(abs(tmp-z) < eps) 27 { 28 x = mid; 29 break; 30 } 31 if(tmp > z) 32 { 33 high = mid; 34 }else{ 35 low = mid; 36 } 37 } 38 return x; 39 }
第二:牛顿迭代法
算法逻辑:
代码如下:
1 double sqrt_NewTon(double z) 2 { 3 double eps = 0.00001; 4 double g = z; 5 while(abs(g*g-z) > eps) 6 { 7 g = (g+z/g)/2; 8 } 9 return g; 10 }
标签:查找 大于 最大值 class 计算 break log sqrt tmp
原文地址:http://www.cnblogs.com/lucy-lizhi/p/7391176.html