精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java編程內功-數據結構與算法「遞歸」

開發 后端 算法
遞歸就是方法自己調用自己,每次調用時傳入不同的變量.遞歸有助于編程者解決復雜的問題,同時可以讓代碼變得整潔.

[[392763]]

概念

簡單地說:遞歸就是方法自己調用自己,每次調用時傳入不同的變量.遞歸有助于編程者解決復雜的問題,同時可以讓代碼變得整潔.

遞歸能解決什么樣的問題

  1. 各種數學問題如:八皇后問題,漢諾塔,階乘問題,迷宮問題,球和籃子問題(google編程大賽).
  2. 各種算法中也會用到遞歸,比如快排,歸并排序,二分查找,分治算法等.
  3. 將用棧解決的問題->遞歸代碼比較簡潔.

遞歸需要遵守的規則

  1. 執行一個方法時,就創建一個新的受保護的獨立空間(棧空間).
  2. 方法的局部變量是獨立的,不會相互影響.
  3. 如果方法中使用的變量是引用類型的變量(比如數組),就會共享該引用類型的數據.
  4. 遞歸必須向退出遞歸的條件逼近,否則就是無限遞歸.
  5. 當一個方法執行完畢,或者遇到return,就會返回,遵守誰調用就將結果返回給誰,同時當方法執行完畢或者返回時,該方法也就執行完畢.

遞歸回溯解決迷宮問題

在一個二維數組中,1表示墻,求小球從指定點到終點走過的路徑.

  1. package com.structures.recursion; 
  2.  
  3. public class MiGong { 
  4.     public static void main(String[] args) { 
  5.         //先創建二維數組模擬迷宮,地圖 
  6.         int[][] map = new int[8][7]; 
  7.         //使用1表示墻,迷宮的上下左右邊全部置為1 
  8.         for (int i = 0; i < 7; i++) { 
  9.             map[0][i] = 1; 
  10.             map[7][i] = 1; 
  11.         } 
  12.         for (int i = 0; i < 8; i++) { 
  13.             map[i][0] = 1; 
  14.             map[i][6] = 1; 
  15.         } 
  16.         //設置擋板 
  17.         map[3][1] = 1; 
  18.         map[3][2] = 1; 
  19.         //輸出地圖 
  20.         System.out.println("原始地圖"); 
  21.         for (int i = 0; i < 8; i++) { 
  22.             for (int j = 0; j < 7; j++) { 
  23.                 System.out.print(map[i][j] + " "); 
  24.             } 
  25.             System.out.println(); 
  26.         } 
  27.  
  28.         //使用遞歸回溯找路 
  29.         setWay(map, 1, 1); 
  30.         System.out.println("按策略走過的路"); 
  31.         for (int i = 0; i < 8; i++) { 
  32.             for (int j = 0; j < 7; j++) { 
  33.                 System.out.print(map[i][j] + " "); 
  34.             } 
  35.             System.out.println(); 
  36.         } 
  37.  
  38.         /* 
  39.         原始地圖 
  40.         1 1 1 1 1 1 1 
  41.         1 0 0 0 0 0 1 
  42.         1 0 0 0 0 0 1 
  43.         1 1 1 0 0 0 1 
  44.         1 0 0 0 0 0 1 
  45.         1 0 0 0 0 0 1 
  46.         1 0 0 0 0 0 1 
  47.         1 1 1 1 1 1 1 
  48.         按策略走過的路 
  49.         1 1 1 1 1 1 1 
  50.         1 2 0 0 0 0 1 
  51.         1 2 2 2 0 0 1 
  52.         1 1 1 2 0 0 1 
  53.         1 0 0 2 0 0 1 
  54.         1 0 0 2 0 0 1 
  55.         1 0 0 2 2 2 1 
  56.         1 1 1 1 1 1 1 
  57.          */ 
  58.     } 
  59.  
  60.     /** 
  61.      * 使用遞歸回溯來找路,如果能map[6][5]位置,則說明通路找到 
  62.      * 約定:當map[i][j]為0表示該點沒有走過,當為1表示墻,當為2表示通路可以走,3表示該點已經走過,但是走不通 
  63.      * 在走迷宮時,需要確定一個策略(方法),下->右->上->左,如果走不通再回溯 
  64.      * 
  65.      * @param map 表示地圖 
  66.      * @param i   從哪個位置開始行坐標 
  67.      * @param j   從哪個位置開始列坐標 
  68.      * @return 如果找到通路, 就返回true, 否則返回false 
  69.      */ 
  70.     public static boolean setWay(int[][] map, int i, int j) { 
  71.         if (map[6][5] == 2) { 
  72.             return true
  73.         } else { 
  74.             if (map[i][j] == 0) {//如果當前這個點沒有走過 
  75.                 //按照策略下->右->上->左 走 
  76.                 map[i][j] = 2;//假定該點可以走通 
  77.                 if (setWay(map, i + 1, j)) {//向下走 
  78.                     return true
  79.                 } else if (setWay(map, i, j + 1)) {//向右走 
  80.                     return true
  81.                 } else if (setWay(map, i - 1, j)) {//向上走 
  82.                     return true
  83.                 } else if (setWay(map, i, j - 1)) {//向左走 
  84.                     return true
  85.                 } else { 
  86.                     map[i][j] = 3;//說明該點是死路,走不通 
  87.                     return false
  88.                 } 
  89.             } else { 
  90.                 //如果map[i][j] != 0,說明可能是1,2,3 
  91.                 return false
  92.             } 
  93.         } 
  94.     } 

八皇后問題

在8*8的國際象棋上擺放8個皇后,使其不能相互攻擊,即:任意兩個皇后都不能處于同一行,同一列,同一斜線上,問有多少種擺法.

理論上應該創建一個二維數組來表示棋盤,但是實際上可以通過算法,用一個一維數組即可解決問題,arr[8]={0,4,7,5,2,6,1,3},對應arr下標表示第幾行,即第幾個皇后,arr[i]=val,val表示第i+1個皇后,放在第i+i行的val+1列.

  1. package com.structures.recursion; 
  2.  
  3. public class Queen8 { 
  4.     //表示共有多少個皇后 
  5.     private int max = 8; 
  6.     //定義數組array,保存皇后放置位置的結果,比如arr[8]={0,4,7,5,2,6,1,3} 
  7.     private int[] array = new int[max]; 
  8.  
  9.     static int count = 0; 
  10.  
  11.     public static void main(String[] args) { 
  12.         Queen8 queen8 = new Queen8(); 
  13.         queen8.check(0); 
  14.         System.out.printf("總共%d擺法\n",count);//92種 
  15.     } 
  16.  
  17.     //放置第n個皇后 
  18.     public void check(int n) { 
  19.         if (n == max) {//n=8 說明前面已經放好 
  20.             print(); 
  21.             count++; 
  22.             return
  23.         } 
  24.         //依次放入皇后并判斷是否沖突 
  25.         for (int i = 0; i < max; i++) { 
  26.             //先把當前的皇后n,放到改行的第1列 
  27.             array[n] = i; 
  28.             //判斷當放置第n個皇后到第i列是,是否沖突. 
  29.             if (judge(n)) { 
  30.                 //接著放n+1皇后,開始遞歸 
  31.                 check(n + 1); 
  32.             } 
  33.         } 
  34.     } 
  35.  
  36.     //查看當放置第n個皇后時,就去檢測該皇后是否前面已經擺放的皇后沖突 
  37.     private boolean judge(int n) { 
  38.         for (int i = 0; i < n; i++) { 
  39.             //array[i] == array[n] 表示第n個皇后是否與之前的皇后在同一列 
  40.             //Math.abs(n - i) == Math.abs(array[n] - array[i]) 表示第n個皇后是否與之前在同一個斜線 
  41.             if (array[i] == array[n] || Math.abs(n - i) == Math.abs(array[n] - array[i])) { 
  42.                 return false
  43.             } 
  44.         } 
  45.         return true
  46.     } 
  47.  
  48.     //將皇后擺放的位置輸出 
  49.     public void print() { 
  50.         for (int i = 0; i < array.length; i++) { 
  51.             System.out.print(array[i] + " "); 
  52.         } 
  53.         System.out.println(); 
  54.     } 

 【編輯推薦】

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-03-18 08:44:20

Java數據結構算法

2021-03-09 06:30:32

JAVA數據結構算法

2021-05-12 09:07:09

Java數據結構算法

2021-03-10 08:42:19

Java數據結構算法

2021-03-17 09:27:36

Java數據結構算法

2021-03-08 06:28:57

JAVA數據結構與算法稀疏數組

2021-03-23 08:33:22

Java數據結構算法

2021-03-26 08:40:28

Java數據結構算法

2021-03-12 09:13:47

Java數據結構算法

2021-04-27 06:21:29

Java數據結構算法

2021-04-15 09:36:44

Java數據結構算法

2021-03-14 08:27:40

Java數據結構算法

2021-04-22 10:07:45

Java數據結構算法

2021-04-07 09:26:37

Java數據結構算法

2021-04-16 09:40:52

Java數據結構算法

2021-05-13 07:34:56

Java數據結構算法

2021-03-24 10:41:04

Java數據結構算法

2021-04-23 09:12:09

Java數據結構算法

2021-03-11 08:53:20

Java數據結構算法

2021-05-08 08:28:38

Java數據結構算法
點贊
收藏

51CTO技術棧公眾號

不卡视频一区二区三区| 最近2019年日本中文免费字幕| 久艹在线免费观看| 人妻少妇精品无码专区| 一本一本久久| 中文字幕日韩欧美在线| 91视频免费入口| 国产免费拔擦拔擦8x高清在线人| 26uuu国产电影一区二区| 国产精品欧美久久久| 亚洲国产成人精品综合99| 好吊妞视频这里有精品| 在线亚洲+欧美+日本专区| 五月天色婷婷综合| 无码精品人妻一区二区三区影院| 日本欧美一区二区在线观看| 色在人av网站天堂精品| 免费人成又黄又爽又色| 韩国三级大全久久网站| 黑人巨大精品欧美一区免费视频 | 最近中文字幕免费mv| 丰满熟妇乱又伦| 美女在线一区二区| 97精品国产97久久久久久免费| 亚洲av熟女国产一区二区性色| 深夜福利一区二区三区| 日本韩国视频一区二区| 免费网站永久免费观看| av每日在线更新| 成人白浆超碰人人人人| 成人动漫网站在线观看| 岛国av中文字幕| 亚洲性感美女99在线| 日韩中文字幕免费| 波多野吉衣中文字幕| 亚洲1区在线| 欧美精品在线观看一区二区| 国产无套内射久久久国产| 超清av在线| 综合婷婷亚洲小说| 日本一区二区三区www| 全国男人的天堂网| 国产成人免费视频网站高清观看视频| 国产精品久久99久久| 国产精品老女人| 欧美日本亚洲韩国国产| xxx一区二区| 人妻无码一区二区三区免费| 美女毛片一区二区三区四区| 亚洲精品一区二区精华| 4438x全国最大成人| 久久天堂影院| 色欧美88888久久久久久影院| 欧洲精品一区二区三区久久| 亚洲第一图区| 一区二区三区视频在线看| 尤物国产精品| 欧美一级二级三级区| 欧美极品另类videosde| 麻豆传媒一区| 欧洲综合视频| 久久亚洲一级片| 欧美乱偷一区二区三区在线| 深夜福利在线视频| 91麻豆.com| 久久爱av电影| 日本午夜在线| 国产欧美一区在线| 亚洲电影一二三区| 在线免费看a| 国产精品国产三级国产普通话三级 | 日韩电影中文字幕av| 久久久国产精品无码| 操欧美女人视频| 亚洲高清不卡av| 中文字幕一区三区久久女搜查官| 精品亚洲自拍| 亚洲精品中文字幕有码专区| 受虐m奴xxx在线观看| 欧美日韩国产免费观看视频| 日韩最新av在线| 91aaa在线观看| 亚洲高清毛片| 日本电影亚洲天堂| 亚洲一级黄色大片| 国产盗摄女厕一区二区三区| 国产有色视频色综合| 日本亚洲欧美| 国产精品不卡在线| 日本a视频在线观看| 美女日韩欧美| 欧美久久免费观看| 亚洲v在线观看| 天堂一区二区三区四区| 在线视频亚洲欧美| 深夜福利影院在线观看| 亚洲深夜福利| 成人在线激情视频| 少妇人妻精品一区二区三区| 国产欧美一区二区三区在线老狼| 精品少妇人妻av一区二区| 国内在线视频| 欧美午夜精品久久久久久超碰 | 国产精品123| 蜜桃传媒视频麻豆第一区免费观看| 成年人在线观看网站| 一区二区三区四区在线播放| 成人免费在线小视频| 91亚洲精品在看在线观看高清| 亚洲高清一二三区| 国产又粗又长又硬| 99日韩精品| 国产美女搞久久| 天堂成人在线| 亚洲免费三区一区二区| 999精品网站| 亚洲网一区二区三区| 亚洲日韩第一页| 久久一区二区三| 美女爽到高潮91| 精品视频在线观看| 超碰公开在线| 欧美日韩国产经典色站一区二区三区 | 久久久婷婷一区二区三区不卡| 日本电影在线观看网站| 欧美性猛交xxxx乱大交| 手机在线观看日韩av| 欧美日韩亚洲在线观看| 5252色成人免费视频| 亚洲国产福利视频| √…a在线天堂一区| 日韩欧美在线免费观看视频| 136国产福利精品导航网址应用| 最近2019中文免费高清视频观看www99 | 亚洲高清999| 色综合伊人色综合网| 国产精品999在线观看| 国产成人av影院| 中文字幕日韩精品久久| 成人天堂yy6080亚洲高清| 日韩电影视频免费| 国产一级片免费| 国产成人精品影视| 国产免费xxx| 9999精品视频| 久久久精品久久久| 国产又粗又猛又黄| 国产精品久久久久久亚洲伦| 99视频在线视频| 国内精品伊人久久久| 日韩av黄色在线观看| 亚洲 欧美 自拍偷拍| 精品国产91久久久久久| 99re久久精品国产| 亚洲欧美日韩国产一区二区| 久久精品ww人人做人人爽| 久久影院午夜精品| 日韩成人av网| 日本特级黄色片| 久久久蜜桃精品| 中文久久久久久| 99精品视频在线| 亚洲精品欧美日韩专区| av免费网站在线| 精品日产卡一卡二卡麻豆| 久久97人妻无码一区二区三区| 国产精品123区| 国产69精品久久久久999小说| 日韩激情毛片| 日韩免费在线视频| 玖玖综合伊人| 色播五月激情综合网| 亚洲av无码一区二区二三区| 国产欧美69| 日本最新一区二区三区视频观看| 欧美精品高清| 亚洲级视频在线观看免费1级| 三级在线观看免费大全| 国内精品久久久久影院色| 一本—道久久a久久精品蜜桃| 欧美高清hd| 欧美极品少妇与黑人| 好吊色一区二区| 五月天网站亚洲| 中文字幕乱码一区| 久久综合网络一区二区| 午夜精品一区二区三区四区 | 久在线观看视频| 国产精品中文字幕制服诱惑| 国产成人av网址| 国产精品久久久久久久龚玥菲| 欧美视频一区二区三区在线观看| 黄色一级片一级片| 国产成人精品免费看| 免费在线观看毛片网站| 要久久爱电视剧全集完整观看| 国产热re99久久6国产精品| av毛片在线免费看| 亚洲国产成人精品一区二区| 国产精品久久久久久人| 国产精品嫩草影院av蜜臀| 视频区 图片区 小说区| 欧美日本中文| 美女一区视频| 国产视频一区二区在线播放| 久久久女女女女999久久| 欧美日本韩国一区二区| 欧美另类z0zxhd电影| 在线日韩国产网站| 91丨九色丨蝌蚪富婆spa| 欧洲熟妇精品视频| 欧美激情偷拍| 蜜桃成人在线| 久久精品国产亚洲5555| 国产精品久久久久久一区二区| 四虎影视成人| 亚洲新声在线观看| 天堂网在线播放| 欧美日韩亚洲另类| 日韩精品成人在线| 国产精品久久久久天堂| www.自拍偷拍| 国产成人免费av在线| 福利在线一区二区三区| 欧美日韩 国产精品| 免费亚洲一区二区| 给我免费播放日韩视频| 国产精品专区h在线观看| 丁香花视频在线观看| 色99之美女主播在线视频| 蜜桃免费在线| 精品国产乱码久久久久久蜜臀| 波多野结衣高清视频| 亚洲成人激情综合网| 久久久精品视频免费观看| 国产网站一区二区| 一起草在线视频| 国产一区二区久久| 在线观看免费污视频| 三级亚洲高清视频| 青青青青草视频| 88国产精品视频一区二区三区| 亚洲国产精品视频一区| 一区二区美女| 精品国产乱码久久久久久108| 91麻豆精品国产综合久久久 | 色一情一乱一伦一区二区三区| 大香伊人久久精品一区二区| 91久热免费在线视频| 99精品在免费线偷拍| 国产精品第七影院| 原纱央莉成人av片| 97视频在线观看成人| 在线看一级片| 欧美激情免费看| 国产美女av在线| zzjj国产精品一区二区| chinese偷拍一区二区三区| 色婷婷综合久久久久| 国产三级在线免费| 亚洲美女在线看| 青梅竹马是消防员在线| 亚洲视频在线观看免费| 青青草在线视频免费观看| 日韩高清不卡av| www香蕉视频| 日韩午夜小视频| 国产成人av免费看| 337p日本欧洲亚洲大胆色噜噜| 精品国自产在线观看| 日韩午夜在线观看| 超碰在线播放97| 日韩激情在线视频| 视频国产在线观看| 亚洲欧美日韩精品久久| 天堂中文在线8| 在线观看日韩专区| 毛片在线播放a| 欧美成年人视频网站欧美| a天堂资源在线| 欧美亚洲视频在线观看| 美女写真久久影院| 国产一区二区在线播放| 91成人在线精品视频| 国产亚洲欧美另类一区二区三区| 红杏一区二区三区| 国内一区在线| 成人久久电影| 日本免费在线视频观看| 黄色成人在线网址| 妞干网在线视频观看| 久久久777| 邪恶网站在线观看| 国产一区二区看久久| 粉嫩av蜜桃av蜜臀av| 久久精品一区二区| 艳妇荡乳欲伦69影片| 亚洲品质自拍视频| 伊人手机在线视频| 欧美日韩国产乱码电影| 亚洲精品免费在线观看视频| 亚洲女人被黑人巨大进入al| av在线资源网| 欧美激情在线观看视频| 欧美大片免费观看网址| 亚洲xxxx视频| 亚洲伊人春色| 欧美少妇一级片| 欧美亚洲三级| 日本77777| 97se亚洲国产综合自在线观| 正在播放国产对白害羞| 精品久久久久久久久久久| 中文av免费观看| 精品久久一区二区| 免费黄网站在线| 午夜欧美大片免费观看| 国产成人精品一区二区三区视频| av在线不卡观看| 婷婷亚洲综合| aⅴ在线免费观看| 国产乱子伦视频一区二区三区| 久久成人激情视频| 亚洲综合清纯丝袜自拍| 久久亚洲精品石原莉奈| 日韩你懂的在线播放| 男人在线资源站| 欧美在线激情网| 天堂va欧美ⅴa亚洲va一国产| 色一情一乱一伦一区二区三区 | 欧美一区二区国产| 韩日在线视频| 日韩av成人在线| 久久99国产精品久久99大师| 国产又大又长又粗又黄| 9国产精品视频| 中文字幕免费在线播放| 樱花草国产18久久久久| 国产精品欧美综合| 国产午夜一区二区| 亚洲国产欧美日本视频| 操一操视频一区| 欧美天天视频| 亚洲一区二区三区四区精品| 久久蜜臀精品av| 黄色免费av网站| 日韩成人av在线| 成年女人在线看片| 91日本在线观看| 91成人影院| 免费av不卡在线| 国产精品家庭影院| 国产理论片在线观看| 最近2019中文字幕大全第二页| 五月天av在线| 欧美日韩国产精品一卡| 亚洲永久在线| jizz日本免费| 日本韩国精品一区二区在线观看| 亚洲av毛片成人精品| 久久久久久久久国产| 加勒比中文字幕精品| 国产中文字幕乱人伦在线观看| 国产aⅴ综合色| 精品在线视频观看| 精品国产网站在线观看| 国产区美女在线| 九九九九九九精品| 午夜在线精品偷拍| 国产亚洲无码精品| 日本韩国精品在线| 午夜视频在线观看网站| 国产精品美女主播在线观看纯欲| 日韩在线麻豆| 男人的天堂日韩| 国产日产欧美一区二区三区| 日韩在线视频不卡| 精品国产一区av| 国产欧美视频在线| 丰满的少妇愉情hd高清果冻传媒 | 欧美成人tv| 色悠悠在线视频| 精品久久久中文| 福利片在线看| 91丨九色丨国产在线| 影音先锋日韩在线| 日本japanese极品少妇| 色菇凉天天综合网| 91大神xh98hx在线播放| 99在线首页视频| 欧美一级网站| 中文字幕第20页| 欧美一区二区三区播放老司机| 91在线三级| 精品欧美日韩| 国内久久精品视频| 日本在线视频免费| 亚洲品质视频自拍网| 亚洲不卡在线| 美女福利视频在线|