第三章 遞迴和時間複雜度

2022-05-02 05:15:06 字數 905 閱讀 6639

#includeint fun(int

n)int fun1(int

n)//

雙向遞迴

int doublefun(int

n)//

遞迴二分查詢 遞迴簡單運用

int search(int n,int arr,int min,int

max)

else

return -1;}

intmian()

//

注意 這個是無法執行的偽**

#include

intmain()

//答案是:o(1) 常數級別的都是 o(1)

#include

void fun(int

n)//

答案是:o(n) 與問題的規模n有關 n取多少就執行多少次 所以是 o(n)

void function1(int

n)//

答案是:o(logn) 與問題的規模n有關 對數級別的 無論底數是多少 都是 logn

//假設問題規模是10000 這個程式要執行2次 log100(n) = 2

void function2(int

n)

return0;

}//答案是:o(n) 與問題的規模n有關

//解題思路:

//假設n=1000 那麼程式要執行 45次左右

//log2(1000)= 10 (約等於);

//o(logn) < 該程式 < o(n)

//所以是o(n)

//有些同學說是o(根號n) 這個答案也對 只是更為精確

int func(int

n;)//

時間複雜度為o(n)看遞迴呼叫的次數與問題的規模之間的關係

第三章 遞迴

遞迴是一種強大的方法,它允許乙個物件以其自身更小的形式來定義自己。恐怕沒有什麼比觀察神秘的自然界中出現的遞迴現象更好的方法來體會遞迴的重要意義了。想想蕨類植物的葉子,每片葉子的小枝幹都是整片葉子的較小縮影 又或者兩個反光的物體,相互對映對方的漸遠的影像。這樣的例子使我們明白儘管大自然的力量是強大的,...

第三章 遞迴

今天看了演算法 第三章遞迴 寫一下收貨 省著以後忘 遞迴就是不斷的呼叫自己 如果使用迴圈,程式效率會更高,如果使用遞迴,程式可能更容易被理解 遞迴的基線條件和遞迴條件 1.遞迴條件 自己呼叫自己 2.基線條件 如何讓自己停下來 push eitem 元素入棧 push方法 元素入棧 public e...

演算法時間複雜度和空間複雜度,尾遞迴

我是分割線 時間複雜度 時間複雜度實際就是乙個函式,該函式計算的是執行基本操作的次 數。演算法分析的分類 演算法存在最好 平均和最壞情況。最壞情況 任意輸入規模的最大執行次數 上界 平均情況 任意輸入規模的期望執行次數 最好情況 任意輸入規模的最小執行次數,通常最好情況不會出現 下界 例如 在乙個長...