在此程序中,您將學(xué)習(xí)使用Java中的遞歸循環(huán)來(lái)反轉(zhuǎn)給定的句子。
public class Reverse {
public static void main(String[] args) {
String sentence = "Go work";
String reversed = reverse(sentence);
System.out.println("倒過(guò)來(lái)的句子是: " + reversed);
}
public static String reverse(String sentence)
{
if (sentence.isEmpty())
return sentence;
return reverse(sentence.substring(1)) + sentence.charAt(0);
}
}運(yùn)行該程序時(shí),輸出為:
倒過(guò)來(lái)的句子是: krow oG
在上面的程序中,我們有一個(gè)遞歸函數(shù)reverse()。
在每次迭代中,我們使用charAt(0)將下一個(gè)reverse()函數(shù)的結(jié)果添加(連接)到句子的第一個(gè)字符。
遞歸調(diào)用必須在charAt()之前,因?yàn)檫@樣最后一個(gè)字符將開(kāi)始添加到左側(cè)。 如果您顛倒順序,您將得到原始句子。
最后,我們以空句子結(jié)尾,reverse()返回反向句子。
| 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" |