遞迴演算法概念及案例

2021-08-18 07:06:51 字數 709 閱讀 4646

1.什麼是遞迴演算法

遞迴演算法就是直接或間接呼叫自己的演算法。

案例用遞迴函式和棧操作逆序棧

乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現了棧中元素的逆序,請設計乙個演算法實現逆序棧的操作,但是只能用遞迴函式來實現,而不能用另外的資料結構。

給定乙個棧stack以及棧的大小top,請返回逆序後的棧。

public class reversestack 

int flag=stack[top-1];

stack[top-1]=stack[stack.length-top];

stack[stack.length-top]=flag;

return reversestackrecursively( stack, top-1);

}}

遞迴演算法實現快排

public static void quick(int arr,int low,int big) 

int index=arr[p];

while(p=0)q--;

if(parr[p]&& pif(p}

arr[p]=index;

quick(arr,low,p-1);

quick(arr,p+1,big);

}

演算法 時間複雜度概念及案例

常數時間的操作 乙個操作如果和資料量沒有關係,每次都是固定時間內完成的操作,叫做常數操作。時間複雜度為乙個演算法流程中,常數運算元量的指標。常用o 讀作big o 來表示。具體來說,在常數運算元量的表示式中,只要高階項,不要低階項,也不要高階項的係數,剩下的部分,如果記為f n 那麼時間複雜度為o ...

尾遞迴的概念及作用

如果乙個函式中所有遞迴形式的呼叫都出現在函式的末尾,我們稱這個遞迴函式是尾遞迴的。當遞迴呼叫是整個函式體中最後執行的語句且它的返回值不屬於表示式的一部分時,這個遞迴呼叫就是尾遞迴。尾遞迴函式的特點是在回歸過程中不用做任何操作,這個特性很重要,因為大多數現代的編譯器會利用這種特點自動生成優化的 原理 ...

LVS概念及演算法總結

lvs linux virtual server 四層排程器 靜態排程演算法 起點公平,針對短連線起作用 輪詢 加權輪詢,適合短連線無狀態 動態排程演算法 結果公平,針對長連線起作用 最少連線,加權最少連線 靜態排程演算法 rr 輪詢 wrr 加權輪詢 1.source ip hashing 一般地...