判斷一個自然數是否時某個數的平方

思路一:

遍歷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;
}


發佈了25 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章