2014-09-15 2 views
0

이것은 숙제입니다. 나는 논리를 얻었지만 코드에 매달렸다. 나는 정상적인 방법으로 해왔고 코드를 얻기 위해 1 주일이 걸렸습니다. Java에서 재귀 적 방법으로 반복 문자열을 가져와야합니다. 이 내 코드이다 : 다음 반복 문자열 반복적으로

String[] str = {"a", "b"}; 
    repeatString(1, str, " "); 

같은 주요 방법으로 호출하는 경우

static String repeatString (final int n, final String[] syllables, final String currentWord) { 
    if (n == 0) { 
     System.out.println(currentWord); 
    } else { 
     for (int i = 0; i < syllables.length; i++) { 
      repeatString(n - 1, syllables, currentWord + syllables[i]); 
     } 
    } 
    return ""; 
} 

내가 얻을 출력 그때

repeatString(2,str," "); 

로 변경하면 (a가, b) 내가 얻을 출력을 (aa, ab, ba, bb)로 변경하면

repeatString(3,str," "); 

그러면 출력 (aaa, aab, aba, abb, baa, bab, bba, bbb)이 출력됩니다. 기본적으로 이것은 n에 대한 2의 힘과 같습니다. n = 1이면 2, n = 3이면 8, 등등. 누군가이 코드를 재귀 적으로 사용하는 데 도움을 주시면 감사하겠습니다.

도움을 주시면 감사하겠습니다.

+0

다른 사람에게 코드 작성을 요청하면 배울 수 없습니다. – Akg

+1

질문을 이해할 수 없습니다. 출력이 잘못 되었습니까? 어떤 도움이 필요 하신가요? (그리고 "_specific_ 답을주십시오."이 코드를 재귀 적으로 가져와야합니다. "라는 말은 구체적이지 않습니다.) – ajb

+0

코드를 작성하지 않습니다. 재귀적인 방식으로이를 수행하는 논리. while 루프가 없기 때문에 while, while 등 –

답변

1

이미 가지고있는 방법은 재귀 적입니다. 재귀 적이라 함은 for 루프가 없어야 함을 의미하지는 않습니다. 재귀 적 방법은 싼 단어로, 메서드가 자신을 호출하는 것을 의미합니다.

+0

입니다. 하지만 저는 Coursera (온라인 연구의 일종)에서 재귀 적으로 배우며 no (for-loop, while)는 없습니다. 만약에 돌아왔다. –

+0

그것은 당신이하고 싶은 일에 달려 있습니다. 루프를 재귀와 결합하는 데는 아무런 문제가 없습니다. 최종 결과 (예 : 인쇄물이 무엇인지)를 원하는대로 입력하십시오. –

+0

Ok. 감사 –