其實對於遞歸與分治之間,經常有很多算法初學者弄不明白這兩者的關系。
其實很簡單,你就把遞歸看做一個特殊循環好了,而分治就是解決這個問題的途徑。
遞歸與分治兩者之間,壓根就沒有一毛錢相關,你完全可以把遞歸改成一個循環,再用分治法求解即可。
就例如經典的漢諾塔問題:
遞歸就是進行一個重復的循環while語句,而分治則是把這個問題分解成無數個重復移動的動作的思維方法。
其實對於這個問題,界限也並非如此清晰,你可以想象,如果我讓一萬個1相加
采用循環,直接循環加一萬次
采用遞歸,遞歸循環一萬次
采用分治,不停的划分(這里划分既可以使用遞歸也可以使用循環),兩兩相加。
