void Reverse () 메소드 작성에 도움을주고 재귀를 사용하여 전체 문장 (Java)을 뒤집습니다.
문제
나는 이미 문자열의 첫 번째 문자를 제거하고 나머지 서브 스트링 후에 넣은 다음 인쇄 한 다음 인쇄를 썼습니다. 지시 사항은 문장의 첫 글자를 제거하여 재귀를 사용하여 문장을 뒤집고 반전 된 나머지 하위 스트링에 연결하는 것이 었습니다. , 즉. "안녕하세요"는 "올리"를 생성합니다. 그러나 나는 재귀 부분에 대해 모른다. 어떤 도움도 감사하겠다. 감사합니다. 이것은 내 코드입니다.
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()
방법 aString
인수와 리버스 버전의 문자열을 반환하면 스스로 호출 할 수 있습니다. - 첫 번째 문자를 제거하고 반전 된 왼쪽 끝에 추가하면 작업이 완료됩니다.
위의 힌트를 해결하면 문제를 해결해야합니다 :-)
일반적으로 재귀 기능을 작성하려면 그 기능 자체를 호출하게됩니다. 예를 들어:
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;
}
}