2015-11-16 154 views
1

以下方法計算什麼?假設該方法最初稱爲i = 0學習遞歸Java

public int mysteryMethod(String a, char b, int i) { 
    if (i == a.length()) 
     return 0; 
    else if (b == a.charAt(i)) 
     return mysteryMethod(a, b, i + 1) + 1; 
    else 
     return mysteryMethod(a, b, i + 1); 
} 

我對遞歸感到困惑。在第二個回報聲明中,+1正在做什麼。

+0

我假設你不想讓我們給你實際的答案,但只是一個提示? –

+0

耶,遞歸的任何幫助或解釋都不錯:) – flowinwind

+0

儘量避免將遞歸函數「展開」爲步驟的誘惑,從而將它轉化爲頭腦中的命令式編程風格。相反,嘗試將該功能看作是*定義*而不是配方。根據* what *而不是* how *來思考。 –

回答

3

在第二條if語句中,+1正在計算某物。所以這裏是一個提示。

什麼是+1計數?

停止閱讀並繼續嘗試。然後繼續閱讀下一個提示。

要回答上面的這個問題,你應該看看+1會發生的情況。這是b等於a.charAt(i)

那麼這對計數有什麼意義呢?

停止閱讀並繼續嘗試。繼續閱讀答案。

該函數計算b發生在字符串a中的次數。在每次迭代時,它會檢查迭代(ith)位置是否等於b。如果是這樣,請將計數增加1並從下一個位置重複該功能。否則,請繼續並檢查下一次迭代。