2014-02-26 6 views
0

안녕하세요, 저는 문자가 단어 내에있는 시간의 양을 반환하는 재귀 적 메서드를 만들려고합니다. 지금까지이 방법을 비 재귀 적으로 수행하는 방법을 만들었지 만, 재귀 적으로 수행하는 방법을 생각하는 데 어려움을 겪고 있습니다.문자열에서 문자 발생 횟수를 재귀 적으로 찾습니다.

public static int count (String line, char c) 
{ 
    int charOccurences = 0; 
    for (int x = 0 ; x < line.length() ; x++) 
    { 
     if (line.charAt (x) == c) 
     { 
      charOccurences++; 
     } 
    } 
    return charOccurences;  
} 

어떤 도움을 주셔서 감사합니다.

+0

재귀는'count ("Hello World", 'o')'호출로 생각해보십시오. 또한 println 문을'count' 메서드 안에 넣으십시오. 'System.out.println (line)'과 같이, 당신이 뭔가를 빼앗을 것이라고 확신합니다. –

답변

3

여기에 일부 논리가 없습니다.

  • 'c'가 부족한 경우 lastIndexOf는 -1을 반환하므로 부분 문자열 방법에서 오류가 발생합니다.
  • c의 발생을 계산하는 논리가 필요합니다. 재귀는 여전히 'count'또는 호출 횟수에 대한 호출의 반환 값을 추가해야합니다. 현재 count에 대한 마지막 호출은 0을 반환 할 것이고, 이것은 단지 전달 될 것이다.

누군가가 당신을 위해 당신의 숙제를 다른 수 있도록 :)

행운을거야, 그래서 이것은 숙제 문제 같은 소리!

+0

감사합니다. 필자는이 일을 정상적으로 수행 할 수있는 방법으로 내 게시물을 편집했습니다. 그러나 나는 재귀 적으로 같은 것을 성취 할 수있는 방법에 대해 생각하지 않는다. 아이디어 좀 줄래? – Noob

+0

편집하기 전에 재귀가 거의 정확했기 때문에 몇 가지 논리가 누락되었습니다. 힌트를 얻으려면 다음을 고려하십시오. return count (line, c) + 1 –

관련 문제