该程序,不使用sqrt()函数,计算出x的平方根的整数部分。
牛顿迭代,数学方法,使用递归实现。
程序运行结果:
实现代码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
//折半法
int my_sqrt1(int x)
{
int l = 0;
int r = x;
int index = -1;
int mid;
while(l <= r)
{
mid = (l+r)/2;
if(mid*mid <= x)
{
index = mid;
l = mid + 1;
}
else
{
r = mid - 1;
}
}
return index;
}
//牛顿迭代
double sqrt_nd(double i, int x)
{
double ret = (i + x/i)/2;
if(ret == i)
{
return i;
}
else
{
return sqrt_nd(ret, x);
}
}
int my_sqrt2(int x)
{
if(x == 0)
{
return 0;
}
return (int)sqrt_nd(x,x);
}
int main()
{
int x;
scanf("%d",&x);
int ret = my_sqrt1(x);
printf("折半法:%d\n",ret);
ret = my_sqrt2(x);
printf("牛顿迭代:%d\n",ret);
return 0;
}
本文含有隐藏内容,请 开通VIP 后查看