思路一:
遍历1到n,将每个数的平方与n比较,若小于,则递增,若等于则返回,若大于,则失败
思路二:
二分查找1到n中某个数的平方为n,时间复杂度为logn.
#include<stdio.h>
int findValue(int start, int end, int n)
{
if(end < 1 || n < 1)
{
return -1;
}
if(start > end)
{
return -1;
}
int middle = (start + end)>>1;
if(middle * middle == n)
{
return middle;
}else if( middle * middle < n )
{
return findValue(middle + 1, end, n);
}else if( middle * middle > n )
{
return findValue(start, middle - 1, n);
}
}
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int result = findValue(1, n, n);
printf("%d\n", result);
}
return 0;
}