帮助编写一个空隙反()方法和使用递归的反向一个完整的句子(Java)
题
我已经写信的东西消除的第一个字符串并把它放之后余下的子串然后打印出来,说明被扭转的一句使用递归由中去除的第一个字母的句子连接到扭转剩余的子串,ie。"你好"产量"olleH".但我不知道有关的递归的一部分,任何帮助,将不胜感激,谢谢。这是我的代码:
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的问题,但应该让你开始。
编辑:(一个提示)不尽量使空隙反向()方法递归的。有它调用实际执行倒车不同,私人递归方法。
其他提示
看,这是一个家庭作业,我会得到一些提示开始:
- 递归的方法的呼吁本身做的工作的一部分
- 一个
reverse()
方法考虑String
参数和返回的逆转版本的串可以打电话本身。 - 如果删除第一个字,并添加到底左右反转过来,你的工作已经完成。
如果你的工作的暗示,你应该解决你的问题:-)
一般情况下,如果你想编写一个递归函数,你会调用内本身的功能。例如:
void fn() {
fn()
}
这个例子显然会无限循环。
在你的情况,你要反复打电话给你的反向功能,直到达到规定的状态(你好转化为2009东海生日贺)。
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;
}
}
不隶属于 StackOverflow