更多的階乘型時間復(fù)雜度O(n!)的分析可以查看下文中的:如何理解階乘型算法復(fù)雜度O(n!)?
如何理解斐波那契數(shù)列的時間復(fù)雜度O(2^N)?O(2^N)Math.pow(base, ex),2個遞歸所以base是2 。N的話是因為N->∞,但其實真正是O(2^(N-1)) 。/** * @param {number} N * @return {number} */var fib = function (N) {/*** 解法1: 遞歸* 性能:88ms 34.2MB*/console.log('foo');if (N <= 1) return N;return fib(N - 1) + fib(N - 2)};N打印foo數(shù)O(2^N)11O(2^0)22^1 + 1O(2^1)32^2 + 1O(2^2 )42^3 + 1O(2^3 )52^4 + 1O(2^4 )
通過上表我們分析得到: 如果包含1的話,嚴(yán)格來講時間復(fù)雜度是O(2^(N-1)) 。如果從N>1開始計算,時間復(fù)雜度確實是O(2^N) 。斐波那契數(shù)列非常長,N->∞,因此可以將斐波那契數(shù)列的時間復(fù)雜度直接看做是O(2^N) 。
如何理解階乘型時間復(fù)雜度O(n!)?O(N!)我們把上面的代碼改造一下,增加一個count用來統(tǒng)計O(n!) 。
let count = 0;function nFacRuntimeFunc(n) {for(let i=0; i<n; i++) {count++;nFacRuntimeFunc(n-1);}}階乘型O(n!)的時間復(fù)雜度按照(n!+(n-1)!+(n-2)!+ ··· + 1) +((n-1)!+(n-2)!+ ··· + 1) 的方式去計算 。注意哦,這里是多個階乘的和 。不僅僅是n * (n-1) * (n-2) * (n-3)···1 。上述示例中的count即為復(fù)雜度的值 。
n多次n! + (n-1)! + ··· + 1!countO(n!)111O(1)2(2!+1!) +(1!)4O(4)3(3!+(2!+1!)+1!)+((2!+1!)+1!)+(1!)15O(15)4…64O(64)5…325O(325)6…1956O(1956)7…13699O(13699)8…109600O(109600)9…986409O(986409)10…9864100O(9864100)
快看看這個表格吧,n為10的時候O(n!)達到了O(9864100),接近了O(一千萬) 。這種算法的性能真的是糟糕到極致了 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 獅子座本周運勢綜合解析 獅子座今日運勢
- 解析氣對人體的幾大作用
- 螞蟻莊園金鑾殿是故宮的哪個宮殿 1月7日答案解析
- 中醫(yī)解析氣功減肥原理
- 免備案服務(wù)器推薦 免費備案域名解析
- 網(wǎng)站域名解析ip方法 網(wǎng)站dns查詢方式
- 解析太極拳實戰(zhàn)經(jīng)驗
- ip域名解析查詢 代理域名備案服務(wù)
- 各類游泳動作的要點解析
- 國內(nèi)DNS測速網(wǎng)站推薦 dns測速在線解析
