//递归分析和使用、 /* * 1.找到相似性 * 2.设计出口 * */ import java.util.List; import java.util.Vector; public class test17 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // p(0, 10); // p1(0, 10); // System.out.println(sum(1, 100)); // System.out.println(sum1(1, 100)); // System.out.println(turn("abcdefg")); List<String> list=pl("abcd"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } //1.简单的打印10个数字问题 public static void p(int begin,int end) { System.out.println(begin); if (begin<end) { //出口 p(begin+1, end); } } public static void p1(int begin,int end) { if (begin<end) { ////出口 p1(begin, end-1); } System.out.println(end); } //2.简单的书累加问题 public static int sum(int begin,int end ) { if (begin==end) { //出口 return begin; } return(begin+sum(begin+1, end)); //累加后赋给begin } public static int sum1(int begin,int end) { if (begin==end) { //出口 return end; } return (end+sum1(begin, end-1)); //累加后赋给begin } //3.字符串翻转问题 public static String turn(String s) { //abcdefg if (s.length()<=1) { return s; } return (turn(s.substring(1))+s.charAt(0)); } ///4.全排列问题 public static List<String> pl(String s) { List<String> lst=new Vector<String>(); //初始化一个空链表 // abc 解题思路: 1。先取出要排列串的第一个字符, // bac 2.剩下的字串再进行全排列 // bca 3.将取出的字符插入到全排列后的字串中。 // acb // cab // cba if (s.length()==1) { //如果要全排列的字符串只有一个字符,直接加入到已初始化的链表中,返回list lst.add(s); return lst; } //如果要排列的字符串长度大于1,取出该串的第一个字符,将字串再进行递归处理 char a=s.charAt(0); String s1=s.substring(1); List<String> t=pl(s1); //递归进行字串的全排列 for (int i = 0; i < t.size(); i++) { String string=(String)t.get(i); for (int j = 0; j <string.length()+1; j++) { lst.add(string.substring(0,j)+a+string.substring(j)); } } return lst; } }
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。