跳到主要内容

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() 之前,因为这样句子的最后一个字符将开始从左侧添加。如果你颠倒顺序,你将得到原始句子。

最终,我们得到一个空的 sentencereverse() 返回反转后的句子。

注意sentence.substring(1) 方法返回字符串 sentence 从索引 1 到字符串末尾的部分。要了解更多,请访问 Java String substring()

执行步骤

迭代reverse()substring()reversedString
1reverse("Go work")"o work"结果 + "G"
2reverse("o work")" work"结果 + "o" + "G"
3reverse(" work")"work"结果 + " " + "o" + "G"
4reverse("work")"ork"结果 + "W" + " " + "o" + "G"
5reverse("ork")"rk"结果 + "o" + "W" + " " + "o" + "G"
6reverse("rk")"k"结果 + "r" + "o" + "W" + " " + "o" + "G"
7reverse("k")""结果 + "k" + "r" + "o" + "W" + " " + "o" + "G"
最终reverse("")-"" + "k" + "r" + "o" + "W" + " " + "o" + "G" = "kroW oG"