Java 程序:使用递归反转句子
要理解这个示例,你应该具备以下 Java 编程 主题的知识:
示例:使用递归反转一个句子
public class Reverse {
public static void main(String[] args) {
String sentence = "Go work";
String reversed = reverse(sentence);
System.out.println("反转后的句子是: " + reversed);
}
public static String reverse(String sentence) {
if (sentence.isEmpty())
return sentence;
return reverse(sentence.substring(1)) + sentence.charAt(0);
}
}
输出:
反转后的句子是: krow oG
在上述程序中,我们有一个递归函数 reverse()
。
在每次迭代中,我们使用 charAt(0)
将句子的第一个字符添加(连接)到下一个 reverse()
函数的结果上。
递归调用必须在 charAt()
之前,因为这样句子的最后一个字符将开始从左侧添加。如果你颠倒顺序,你将得到原始句子。
最终,我们得到一个空的 sentence
,reverse()
返回反转后的句子。
注意:sentence.substring(1)
方法返回字符串 sentence
从索引 1 到字符串末尾的部分。要了解更多, 请访问 Java String substring()。
执行步骤
迭代 | reverse() | substring() | reversedString |
---|---|---|---|
1 | reverse("Go work") | "o work" | 结果 + "G" |
2 | reverse("o work") | " work" | 结果 + "o" + "G" |
3 | reverse(" work") | "work" | 结果 + " " + "o" + "G" |
4 | reverse("work") | "ork" | 结果 + "W" + " " + "o" + "G" |
5 | reverse("ork") | "rk" | 结果 + "o" + "W" + " " + "o" + "G" |
6 | reverse("rk") | "k" | 结果 + "r" + "o" + "W" + " " + "o" + "G" |
7 | reverse("k") | "" | 结果 + "k" + "r" + "o" + "W" + " " + "o" + "G" |
最终 | reverse("") | - | "" + "k" + "r" + "o" + "W" + " " + "o" + "G" = "kroW oG" |