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