# 1. 字符串翻轉
在這個過程中不能引入外部的變量,僅使用遞歸來求解這個問題。對于這個問題,需要找到其子問題,以及程序的出口。不妨做一個簡單的分析:
- 如果字符串只有一個字符,那么返回這個字符串即可;
- 如果字符串不只有一個字符,那么我們需要劃分為左右兩個部分,然后返回右左即可;
那么,對應的代碼可以描述為:
~~~
/**
* 遞歸的完成字符串的翻轉
* @param str 待翻轉字符串
* @return 翻轉后字符串
*/
public String reverse(String str){
int len = str.length();
if(len <= 1){ // 長度為空或者為1均返回這個字符本身
return str;
}
String left = str.substring(0, len / 2);
String right = str.substring(len / 2, len);
return reverse(right) + reverse(left);
}
~~~