2 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
不,這并不總是必要的。僅當(dāng)您有特定原因時(shí)才需要將其包裝。以下是您可能需要包裝它的幾個(gè)原因:
如果它傳遞給自己的參數(shù)與它在初始調(diào)用中收到的參數(shù)不同,無論出于何種原因
也許遞歸參數(shù)很復(fù)雜,調(diào)用者很難為它們提供適當(dāng)?shù)某跏贾?/p>
也許初始參數(shù)與遞歸參數(shù)明顯不同
如果您需要起始位置(例如,包裝器)具有與遞歸方法本身不同的訪問級(jí)別。
可能還有幾個(gè)。
但許多遞歸方法不需要包裝。例如,帶有謂詞的經(jīng)典深度優(yōu)先節(jié)點(diǎn)遍歷方法在遞歸期間與初始調(diào)用期間不需要任何特殊傳遞,因此無需包裝它。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
遞歸函數(shù)通常需要一個(gè)參數(shù)來表示先前調(diào)用的累積結(jié)果。問題域中的一個(gè)假設(shè)示例是
public int numberOfPossibleTraversals(Node node, List<Rule> rules) { ...
所以第一個(gè) arg 在每個(gè)遞歸調(diào)用中被修改。您使用這樣的起始值開始調(diào)用鏈
int c = numberOfPossibleTraversals(root, rules);
有時(shí)(取決于具體實(shí)現(xiàn))為累積參數(shù)建立初始值可能需要一些邏輯/處理。這就是“包裝器”方法可能發(fā)揮作用的地方。例如,圖本身可能有這樣一個(gè)包裝函數(shù),它為遞歸函數(shù)構(gòu)建參數(shù)
添加回答
舉報(bào)