思路一:
遍歷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;
}