void Reverse () 메소드 작성에 도움을주고 재귀를 사용하여 전체 문장 (Java)을 뒤집습니다.

StackOverflow https://stackoverflow.com/questions/1869434

  •  18-09-2019
  •  | 
  •  

문제

나는 이미 문자열의 첫 번째 문자를 제거하고 나머지 서브 스트링 후에 넣은 다음 인쇄 한 다음 인쇄를 썼습니다. 지시 사항은 문장의 첫 글자를 제거하여 재귀를 사용하여 문장을 뒤집고 반전 된 나머지 하위 스트링에 연결하는 것이 었습니다. , 즉. "안녕하세요"는 "올리"를 생성합니다. 그러나 나는 재귀 부분에 대해 모른다. 어떤 도움도 감사하겠다. 감사합니다. 이것은 내 코드입니다.

public class Sentence {

   private String sentence;

   public Sentence(String astring) {
      sentence = astring;
   }

   public void reverse(){

   String firstChar = sentence.substring(0,1);

   String remainingSen = sentence.substring(1,sentence.length());

   System.out.println(remainingSen+firstChar);  
  }
}
도움이 되었습니까?

해결책

재귀 개념을 이해하십니까? 그렇다면 기본 케이스 (재귀를 멈출 조건)와 각 재귀 단계에서 수행하려는 작업을 파악하십시오. 힌트 : 문자열을 반대로하고 반전 된 문자열을 반환하는 재귀 메소드가 필요합니다. HW 질문에 똑바로 대답하지는 않지만 시작해야합니다.

편집 : (하나 더 힌트) void Reverse () 메소드를 재귀 시키려고하지 마십시오. 실제로 역전을 수행하는 다른 개인 재귀 방법을 호출하도록하십시오.

다른 팁

이것이 숙제 임무라는 것을보고, 나는 시작할 힌트를 줄 것이다.

  • 재귀 방법은 작업의 일부를 수행하기 위해 스스로를 호출합니다.
  • reverse() 방법 a String 인수와 리버스 버전의 문자열을 반환하면 스스로 호출 할 수 있습니다.
  • 첫 번째 문자를 제거하고 반전 된 왼쪽 끝에 추가하면 작업이 완료됩니다.

위의 힌트를 해결하면 문제를 해결해야합니다 :-)

일반적으로 재귀 기능을 작성하려면 그 기능 자체를 호출하게됩니다. 예를 들어:

void fn() {
    fn() 
}

이 예제는 분명히 무한 루프 일 것입니다.

귀하의 경우, 정의 된 상태에 도달 할 때까지 (Hello가 Olleh로 변환)에 도달 할 때까지 반복 기능을 반복적으로 호출하려고합니다.

public class Sentence {

  private String sentence;

  // ... etc ...

  public void reverse() {
      // Base Case: When do you want this to end? This statement is designed
      // to end the recursion when a desired state is reached

      // some sort of string manipulation (which you have already worked on)

      // call reverse() to continue the 'looping' until 
      // a desired _case_ is reached
  }
}

나는 이것이 숙제 질문이라고 생각하고 곧 예정되어 있으므로 정확한 답변을 제공하지 않을 것입니다 ...

업데이트 1 : 표현 된 제약 조건과 일치하도록 리버스 예제를 수정했습니다.

public void reverse()
{
    if(text.length() > 0)
    {
        String first = text.substring(0,1);
        String remaining = text.substring(1);

        Sentence shorter = new Sentence(remaining);
        shorter.reverse();

        text = shorter.text + first;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top