溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

遞歸調(diào)精析及例子

發(fā)布時(shí)間:2020-08-05 15:29:52 來(lái)源:網(wǎng)絡(luò) 閱讀:186 作者:botaorain 欄目:編程語(yǔ)言

 

  1. //遞歸分析和使用、 
  2. /* 
  3.  * 1.找到相似性 
  4.  * 2.設(shè)計(jì)出口 
  5.  *  
  6.  */ 
  7. import java.util.List; 
  8. import java.util.Vector; 
  9.  
  10. public class test17 { 
  11.  
  12.     /** 
  13.      * @param args 
  14.      */ 
  15.      
  16.     public static void main(String[] args) { 
  17.         // TODO Auto-generated method stub 
  18. //      p(0, 10); 
  19. //      p1(0, 10); 
  20. //      System.out.println(sum(1, 100)); 
  21. //      System.out.println(sum1(1, 100)); 
  22. //      System.out.println(turn("abcdefg")); 
  23.          
  24.          
  25.         List<String> list=pl("abcd"); 
  26.         for (int i = 0; i < list.size(); i++) { 
  27.             System.out.println(list.get(i)); 
  28.         } 
  29.          
  30.          
  31.     } 
  32.     //1.簡(jiǎn)單的打印10個(gè)數(shù)字問(wèn)題 
  33.     public static void p(int begin,int end) { 
  34.         System.out.println(begin); 
  35.         if (begin<end) {         //出口 
  36.             p(begin+1, end); 
  37.         } 
  38.     } 
  39.      
  40.     public static void p1(int begin,int end) { 
  41.         if (begin<end) {        ////出口 
  42.             p1(begin, end-1); 
  43.         } 
  44.         System.out.println(end); 
  45.     } 
  46.      
  47.      
  48.     //2.簡(jiǎn)單的書(shū)累加問(wèn)題 
  49.      
  50.     public static int sum(int begin,int end ) { 
  51.         if (begin==end) {                 //出口 
  52.             return begin; 
  53.         } 
  54.         return(begin+sum(begin+1, end));  //累加后賦給begin 
  55.     } 
  56.      
  57.     public static int  sum1(int begin,int end) { 
  58.         if (begin==end) {                //出口 
  59.             return end; 
  60.         } 
  61.         return (end+sum1(begin, end-1));  //累加后賦給begin 
  62.     } 
  63.      
  64.     //3.字符串翻轉(zhuǎn)問(wèn)題 
  65.     public static String  turn(String s) { 
  66.         //abcdefg 
  67.         if (s.length()<=1) { 
  68.             return s; 
  69.         } 
  70.         return (turn(s.substring(1))+s.charAt(0)); 
  71.     } 
  72.      
  73.      
  74.     ///4.全排列問(wèn)題 
  75.     public static List<String> pl(String s) { 
  76.         List<String> lst=new Vector<String>();   //初始化一個(gè)空鏈表 
  77. //      abc    解題思路: 1。先取出要排列串的第一個(gè)字符, 
  78. //      bac    2.剩下的字串再進(jìn)行全排列 
  79. //      bca     3.將取出的字符插入到全排列后的字串中。 
  80. //      acb 
  81. //      cab 
  82. //      cba 
  83.         if (s.length()==1) {          //如果要全排列的字符串只有一個(gè)字符,直接加入到已初始化的鏈表中,返回list 
  84.             lst.add(s); 
  85.             return lst; 
  86.         } 
  87.         //如果要排列的字符串長(zhǎng)度大于1,取出該串的第一個(gè)字符,將字串再進(jìn)行遞歸處理 
  88.         char  a=s.charAt(0); 
  89.         String s1=s.substring(1); 
  90.         List<String> t=pl(s1);   //遞歸進(jìn)行字串的全排列 
  91.          
  92.         for (int i = 0; i < t.size(); i++) { 
  93.             String string=(String)t.get(i);      
  94.              
  95.             for (int j = 0; j <string.length()+1; j++) { 
  96.                  
  97.                 lst.add(string.substring(0,j)+a+string.substring(j)); 
  98.             } 
  99.         } 
  100.         return lst; 
  101.     } 
  102.      
  103.      
  104.      

 

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI