#include<stdio.h>//binSearch计算x^2=2的近似解,精度1e-5; 证明二元搜索的快速低复杂度寻优能力floatfunc(float x){return x * x -2;}floatbinSearch(float beg,float end,float acc){float mid;while( end - beg > acc){
mid =(end + beg)/2;if(func(mid)>0){//递增是大于,否者相反
end = mid;}else{
beg = mid;}printf("beg,end,acc %f,%f,%f\n",beg,end,acc);}return mid;}int main (){float a =binSearch(1,2,1e-5);printf("x*x = 2 solution is %f\n", a);//binSearch(1, 2, 1e-2)printf("x*x = 2 solution is %f\n",binSearch(1,2,1e-6));printf("x*x = 2 solution is %f\n",binSearch(1,2,1e-10));//1e-10明显超出float精度了,造成算法不收敛;return0;}