问题
我们把“cba”称为“abc”的反转串。
求输入字符串的反转串。
思路
这里我们仍然使用递归的方法。
构建递归的要诀:
- 找到相似性(对该串可以进行怎样的重复的处理,并使得每一次处理返回一个或多个更简洁的处理)
- 定义出口(递归函数不能无限执行下去,所以要定义递归的出口)
在这个问题中我们这样思考: - 首先将该字符串分为首字符和其他字符两部分。
- 然后返回其他字符,并将首字符返回。
- 对反回的其他字符继续使用递归操作。
- 当最后返回的其他字符长度为1或者空时(即剩下最后一个字符),返回该字符即可。
举例
例如:求abc的反转串。
- 首先将字符串abc传入递归函数中,返回包含参数bc的递归函数继续进行递归和字符a。
- 上面一步返回bc的递归函数,继续返回包含参数c的递归函数继续递归和字符b。
- 最后返回的包含参数c的递归,因为其传入参数字符串的长度为1,所以直接返回c。
实现代码
package suanfa;
public class fanzhuan{
public static String f(String s1)
{
if(s1.length()<=1)
return s1;
return f(s1.substring(1))+s1.charAt(0);
}
public static void main(String[] args) {
System.out.println(f("abcdef"));
}
}