- 字符串翻转
/**
* 字符串翻转
* @param str
* @return
*/
public static String reverse(String str){
if(str==null){
return "";
}
else if(str.length()==1){
return str;
}
return reverse(str.substring(1)) + str.charAt(0);
}
2.判断回文,递归
/**
* 判断回文,递归
* 1:判断首尾字符是否相同,相同则递归判断下一个首尾字符是否相同
* 2:终止条件index到了字符串的一半处,则一级一级递归返回向上传递boolean
*/
public static boolean loopword(String str,int i){
if(str==null){
return false;
}
if(str.charAt(i)==str.charAt(str.length()-1-i)){
if(i==(str.length()+1)/2){
return true;
}
return loopword(str,++i);
}
return false;
}
3.将一个数字翻转并存储到一个数组中,递归
/**
* 将一个数字翻转并存储到一个数组中,递归
*/
public static void reversenumber(int[] arr,int i,int num){
if(i<arr.length){
int temp = num%10;
num = (num-num%10)/10;
arr[i] = temp;
++i;
reversenumber(arr,i,num);
}
}
4.利用递归计数判断某个字符在字符串出现的次数
/**
* 利用递归计数判断flag字符在某个字符串出现的次数
* @param str
*/
public static int countstr(String str,String flag){
if(str==null || str.length()==0){
return 0;
}
int count = 0;
if(str.substring(0,1).equals(flag)){
count = 1;
}
return count+countstr(str.substring(1),flag);
}