代替迭代的槽循環,遞歸你寫的函數調用自身(因此需要一個第三參數,這是你在陣列中具有的當前位置)。
您只需從索引0開始,如果當前字符不是char,則返回0,如果是,則返回1。然後,您必須對數組的其餘部分執行相同的操作。當到達結尾(currIndex == arr.length
)時,返回0作爲求和的起始值。
public static void main (final String[] args) {
char[] foo = {'f', 'o', 'o', 'b', 'a', 'r'};
System.out.println (count (foo, 'o')); // 2
System.out.println (countRecursive (foo, 'o')); // 2
}
public static int countRecursive (final char[] arr,
final char ch) {
return countRecursive (arr, ch, 0);
}
public static int countRecursive (final char[] arr,
final char ch,
final int currIndex) {
if (currIndex == arr.length) {
return 0;
} else {
return (arr[currIndex] == ch ? 1 : 0) + countRecursive (arr, ch, currIndex + 1);
}
}
@kkaosninja他isn't詢問當前發生的遞歸,他要我們只要我得到它改寫成遞歸這一點。 – SomeJavaGuy
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在您發佈您的嘗試並準確描述問題之前,我們無法有效幫助您。 StackOverflow不是一個編碼或教程服務。我沒有看到在這裏寫這個遞歸。 – Prune