如何求遞歸算法的時間複雜度

遞歸算法的時間複雜度

很多同學對遞歸算法的時間複雜度都不甚瞭解

同一道題目,同樣使用遞歸算法,有的同學寫出了O(n)的代碼,有的同學就寫出了O(logn)的代碼

這是爲什麼呢, 就是因爲對遞歸的時間複雜度理解的不夠深入導致的

如果正在讀本文的讀者也對遞歸的時間複雜度懵懵懂懂,希望你可以耐心讀下去,必然有所收穫

這裏我想通過一道簡單的面試題,來帶大家逐步分析遞歸算法的時間複雜度,最後找出最優解。

面試官一問

來看一下這道面試題:求x的n次方

大家想一下這麼簡單的一道題目 代碼應該如何寫。

最直觀的方式應該就是,一個for循環求出結果,代碼如下

int function1(int x, int n) {
    int result = 1;  // 注意 任何數的0次方等於1
    for (int i = 0; i < n; i++) {
        result = result * x;
    }
    return result;
}

時間複雜度爲O(n)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章