當前位置:成語大全網 - 書法字典 - 六、遞歸和回溯算法

六、遞歸和回溯算法

在計算機領域,許多問題都可以用遞歸算法來解決。在遞歸中,使用時間最長的方法是回溯。當我們詳細分析問題時,可以發現這類問題本質上是壹個樹形圖。

遞歸算法的本質是將原問題轉化為壹個更小的相同問題並求解。壹般要註意兩點:

1,遞歸終止條件。它對應的是遞歸算法中最基本、最簡單的問題。

2.遞歸過程。遞歸過程需要將原始問題逐步推至更小的相同問題。更小意味著子問題更容易解決。在寫的情況下可以找到壹個遞歸公式。在這個過程中,有必要徹底理解遞歸函數的含義。弄清楚這個函數的輸入和輸出是什麽,這樣寫起來就清楚多了。

由於這個遞歸公式,我們很容易看出遞歸的終止條件是我們所知道的f(0)和f(1)。有了f(0)和f(1),我們可以繼續推導f(3)直到f(n)。

但是現在我們只使用遞歸算法的思想來解決這個問題:

像我們常見的數據結構,如鏈表、樹和圖,都有壹個自然的遞歸結構。由於鏈表是線性結構,我們通常可以通過直接循環遍歷它來解決問題,但這裏我們使用遞歸方法來解決LeetCode上面的問題。

LeetCode 203移除鏈表元素。

解析:鏈表的結構可以理解為壹個節點連接這個較短的鏈表,這樣我們壹直讀取到最後壹個節點為None,那麽我們此時的遞歸終止條件是head指向None,返回為None。

深入了解遞歸算法後,我們開始學習回溯法。通過LeetCode上面的幾個問題,我們來深入探討壹下遞歸和回溯的應用。

持續更新...

數據結構與算法系列博客:

壹、數據結構和算法概述

第二,LeetCode典型主題的整理與分析

第三,鏈表和LeetCode問題

第四,堆棧和隊列(Stack and Queue

動詞 (verb的縮寫)樹

六、遞歸和回溯算法

七。動態規劃

八、分類和搜索

九、散列表

參考數據

1、

2、

3、