题目如下:
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
int mySqrt(int x){
int a;
a = 1;
int re = 0;
if(x ==0)
{
return 0;
}else
{
for(a;a < 46340;a++)
{
if(a * a == x)
{
re = a;
}else
{
if(a * a < x){
if((a+1)*(a+1) > x)
re = a;
}
}
}
if(re == 0)
{
re = 46340;
}
}
return re;
}
心得:第一次写这个函数的时候忽略了俩个问题,一个是当输入的数是0的情况,一个是当输入的数非常大的时候做相乘的时候会出现内存溢出,所以对a循环的范围要注意取值到哪里。
根据网友给出的提示,int 类型 数据最大为214783647,得到的最大平方根是2147836400的平方根46340,所以在这里要注意调节一下。