總結

星辰·秋發表於2024-12-07
遞迴,是搜尋常用的一種演算法。在搜素中它叫深度優先搜尋(簡稱“深搜”)。
什麼是遞迴呢?“遞迴是一種常見的程式設計思想,指的是在執行過程中不斷地呼叫自身”——AI智慧回答。其實就是一個函式,自己呼叫自己或者透過其他函式呼叫自己。這不就是一個死迴圈嗎?沒錯,所以遞迴的停止條件so important。

遞迴的樣子大概是這樣:
函式型別 函式名(多用"dfs") (引數1,引數2,...)
{
if(條件)
{
......;
返回值;
}
函式內容;
呼叫該函式;
}
遞迴函式通常被用於尋找最優解或合法解的個數,其實就是用n層迴圈暴力列舉。遞迴主要分三種列舉方式:
1.子集列舉
又稱01列舉,就是列舉每個量,選或不選(標記為“合法或不合法”),時間複雜度O(2^n),例題 超級書架。
2.全排列列舉
就是列舉每個位置,在每個位置上放一個合法的量,例題 全排列輸出。
3.組合列舉
就是在集合中挑選固定幾個量,列舉排列其他量輸出,例題 組合輸出。
遞迴函式很大的缺點就是TLE,所以最佳化很重要。但是,有時資料too big,那就要另尋他法了。那麼說,遞迴在考試時是不是沒有大用?NO!我們可以透過遞迴探索規律,從而寫出高分程式碼。真不行,也可以用遞迴偷些拿些分。
總而言之,遞迴很重要,一定要多加練習。