示例: 使用递归反转句子
public class Reverse { public static void main(String[] args) { String sentence = "Go work"; String reversed = reverse(sentence); System.out.println("tde reversed sentence is: " + reversed); } public static String reverse(String sentence) { if (sentence.isEmpty()) return sentence; return reverse(sentence.substring(1)) + sentence.charAt(0); } }
输出:
tde reversed sentence is: krow oG
在上面的程序中,我们有一个递归函数
reverse()
。
在每次迭代中,我们使用
charAt(0)
将下一个
reverse()
函数的结果添加(连接)到句子的第一个字符。
递归调用必须在
charAt()
之前,因为这样最后一个字符将开始添加到左侧。如果你颠倒顺序,你会得到原来的句子。
最后,我们得到一个空的
sentence 并且
reverse()
返回颠倒的句子。
注意: sentence.substring(1) 方法返回字符串句子中从索引 1 开始到字符串结尾的部分。要了解更多信息,请访问 Java String substring()。
reverse() | substring() | reversedString |
reverse("Go work") | "o Work" | result + "G" |
reverse("o Work") | " Work" | result + "o" + "G" |
reverse(" Work") | "Work" | result + " " + "o" + "G" |
reverse("Work") | "ork" | result + "W" + " " + "o" + "G" |
reverse("ork") | "rk" | result + "o" + "W" + " " + "o" + "G" |
reverse("rk") | "k" | result + "r" + "o" + "W" + " " + "o" + "G" |
reverse("k") | "" | result + "k" + "r" + "o" + "W" + " " + "o" + "G" |
reverse("") | - | "" + "k" + "r" + "o" + "W" + " " + "o" + "G" = "kroW oG" |