精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

波多野结衣欲乱| 国产超碰在线播放| 亚洲 欧美 自拍偷拍| 播放一区二区| 国产精品国产a| 欧美一区第一页| 农村老熟妇乱子伦视频| av在线视屏| 91网上在线视频| 国产精品亚洲аv天堂网| 99久久人妻精品免费二区| 欧美国产大片| 一区二区三区91| 日本视频一区二区不卡| www.久久色| 日韩综合小视频| 亚洲美女激情视频| 天天夜碰日日摸日日澡性色av| 蜜桃视频在线入口www| 国模无码大尺度一区二区三区| 国产亚洲a∨片在线观看| 免费高清视频在线观看| 污污视频在线| 欧美国产日产图区| 国产在线资源一区| 91国在线视频| 久久亚洲色图| 91精品国产乱码久久久久久蜜臀| www.av免费| 国产精品三级| 在线观看免费亚洲| 成熟丰满熟妇高潮xxxxx视频| 精品麻豆一区二区三区| 国产欧美一区二区三区在线看蜜臀 | 91精品在线一区| 尤物视频免费观看| 国产欧美精品久久| 久久久久久久av| 白丝校花扒腿让我c| 亚洲精品三区| 欧美日韩免费不卡视频一区二区三区| 日韩免费毛片视频| 玖玖在线播放| 日本一区二区不卡视频| 免费观看国产成人| 中文字幕av网站| 久久午夜精品一区二区| 奇米一区二区三区四区久久| 日产欧产va高清| 雨宫琴音一区二区在线| 欧美二区在线播放| 欧美精品黑人猛交高潮| 麻豆一区一区三区四区| 亚洲国产免费av| 麻豆精品国产传媒av| 都市激情亚洲欧美| 精品久久久久久久久久久久包黑料| 99久久综合网| aaa国产精品视频| 亚洲国产精品久久91精品| 在线xxxxx| 麻豆精品蜜桃| 欧美色大人视频| 激情黄色小视频| 24小时免费看片在线观看| 亚洲免费大片在线观看| 日本精品福利视频| 久久精品a一级国产免视看成人| 91最新地址在线播放| 欧美午夜精品理论片a级大开眼界| 久久这里精品| 国产精品妹子av| www.99riav| 97超碰在线免费| 色综合天天综合| 中文字幕在线观看日| 日韩中文字幕视频网| 色婷婷综合久久久中文一区二区| 99久久激情视频| 欧美xxxbbb| 欧美日韩亚洲一区二区三区| 玩弄japan白嫩少妇hd| 97欧美成人| 欧美一区二区三区在线| 色婷婷免费视频| 清纯唯美日韩| 欧美美女18p| 探花视频在线观看| 久久国产人妖系列| 国产精华一区| 超碰在线影院| 亚洲成av人片一区二区梦乃| 欧美xxxxx在线视频| 亚洲成人1区| 欧美视频在线播放| 热久久精品国产| 日本一区二区三区中文字幕| 精品美女在线播放| 国产调教在线观看| 激情亚洲成人| 国产精品一区二区3区| 国产18精品乱码免费看| 国产日韩欧美精品电影三级在线| 996这里只有精品| 蜜桃视频成人m3u8| 精品久久久久久久久久久久久久久久久 | 一本色道久久综合亚洲精品小说 | 午夜亚洲影视| 91久久久久久久一区二区| 午夜视频免费看| 亚洲人吸女人奶水| 国产精品无码av无码| 涩爱av色老久久精品偷偷鲁| 在线中文字幕日韩| 免费看污片的网站| 欧美日本在线| 国产日韩换脸av一区在线观看| 国模私拍一区二区| 视频一区视频二区中文| 鬼打鬼之黄金道士1992林正英| www日韩tube| 日韩欧美极品在线观看| 欧美xxxxx少妇| 欧美黄色aaaa| 成人一区二区电影| 99热这里只有精品99| 久久久久久久久久久黄色| 性一交一乱一伧国产女士spa| 人人玩人人添人人澡欧美| 亚洲天堂男人的天堂| 一区二区三区视频免费看| 高潮精品一区videoshd| 老司机午夜免费福利视频| av在线亚洲一区| 精品国内自产拍在线观看| 姑娘第5集在线观看免费好剧| 99国产精品久久久久久久久久久| 美脚丝袜脚交一区二区| 日韩精品视频中文字幕| 久久视频免费观看| 国产又大又粗又硬| 成人小视频免费观看| 成人国产一区二区三区| 成人污污视频| 亚洲国产天堂网精品网站| 国产精品30p| 成人精品视频.| 久久久久久免费看| 欧美色图五月天| 91精品91久久久久久| 人成免费电影一二三区在线观看| 欧美日韩国产在线播放| 亚洲av无码一区二区二三区| 日韩午夜免费视频| 欧美精品123| yw.尤物在线精品视频| 中文日韩电影网站| 国产又粗又长视频| 亚洲乱码国产乱码精品精可以看 | 一级做a爱片久久| 逼特逼视频在线观看| 亚洲精品美女91| 久久久久久久久久码影片| 美女网站在线看| 亚洲男人天堂古典| 亚洲天堂视频在线| 亚洲免费视频中文字幕| www国产视频| 日日夜夜一区二区| 亚洲精品二区| 视频二区欧美| 日本sm极度另类视频| 69av在线| 亚洲大胆人体视频| 最近中文字幕av| 一区二区三区四区高清精品免费观看| 亚洲日本久久久| 日本伊人色综合网| 69精品丰满人妻无码视频a片| 日本一道高清一区二区三区| 国产精品黄视频| 午夜在线激情影院| 亚洲欧洲免费视频| 国产又粗又大又爽| 黄色精品一区二区| 国产一区第一页| 成人免费的视频| 无码日韩人妻精品久久蜜桃| 一二三区不卡| 国产美女91呻吟求| 草草影院在线| 日韩视频精品在线| 亚洲av毛片成人精品| 欧美日韩国产精品成人| 在线观看 中文字幕| 中文字幕一区视频| 男女黄床上色视频| 国产成人一级电影| 九九九在线观看视频| 韩国亚洲精品| 亚洲一区二区三区涩| 免费日韩一区二区三区| 91精品久久久久久久久| 奇米777日韩| 欧美激情一区二区三区成人 | 蜜臀一区二区三区精品免费视频| 精品二区视频| 亚洲黄色网址在线观看| 免费精品国产| 国产尤物91| 日韩视频1区| 成人黄色午夜影院| 成人精品电影在线| 38少妇精品导航| 日本孕妇大胆孕交无码| 日韩中文av在线| 久久久久久久影视| 亚洲国产另类 国产精品国产免费| 波多野结衣毛片| 精品国产乱码久久久久久虫虫漫画 | 一区久久精品| 一区二区三区四区免费观看| 欧美裸体在线版观看完整版| 精品国产二区在线| 无码国模国产在线观看| 2022国产精品| 青娱乐极品盛宴一区二区| 国产精品96久久久久久| 亚洲国产欧美日本视频| 97不卡在线视频| ririsao久久精品一区| 欧美另类xxx| www视频在线免费观看| 久久九九免费视频| 黄a在线观看| 久热精品视频在线| 欧美黑人激情| 久久精品久久久久电影| 久久99精品久久| xxx一区二区| 久热国产在线| 九九九热精品免费视频观看网站| 国产一二区在线观看| 久久精彩免费视频| 成人黄视频在线观看| 另类少妇人与禽zozz0性伦| 国产黄大片在线观看画质优化| 久久精品99久久久香蕉| 黄色网址免费在线观看| 久久精品国产成人| 91香蕉在线观看| 日韩国产精品视频| 天天操天天插天天射| 欧美伊人久久久久久久久影院 | 欧美日韩精品亚洲精品| 一区二区三区高清| 久久精品99久久久久久| 久久久电影一区二区三区| 丰满少妇一区二区| 欧美国产精品久久| 手机在线免费看片| 亚洲曰韩产成在线| 久久久精品免费看| 在线观看国产91| 国产情侣自拍小视频| 欧美大片日本大片免费观看| 天天干天天草天天射| 亚洲欧美日韩久久久久久| 91xxx在线观看| 久久高清视频免费| 日本乱码一区二区三区不卡| 国产91在线高潮白浆在线观看 | 国产视频一区二区不卡| 神马午夜久久| 婷婷四月色综合| 午夜精品国产| 欧美 日韩 国产一区| 久久精品国产亚洲高清剧情介绍| 四虎国产精品免费| 久久夜色精品国产欧美乱极品| 成人小视频免费看| 一区二区在线观看av| 欧美精品一二三四区| 欧美日韩国产精品成人| 熟妇人妻一区二区三区四区| 在线成人激情黄色| 国产乱码在线| 国产欧美亚洲精品| 狼人精品一区二区三区在线| 亚洲狠狠婷婷综合久久久| 欧美三级午夜理伦三级中文幕| 成年人小视频网站| 国产精品一区二区三区网站| 精品人妻一区二区三区视频| 亚洲三级在线免费| 免费av网站在线| 日韩一级片网址| www日韩tube| 992tv成人免费影院| 精品久久在线| 蜜桃臀一区二区三区| 午夜日本精品| 99热一区二区| 久久久久久久久久久99999| 久久午夜无码鲁丝片午夜精品| 色88888久久久久久影院按摩| 午夜精品久久久久久久99| 最新69国产成人精品视频免费| 99re6在线精品视频免费播放| 国产主播欧美精品| 国产精品一区高清| 免费拍拍拍网站| 国产在线播精品第三| 亚洲欧美va天堂人熟伦| 欧美日韩精品在线视频| 亚洲av无码片一区二区三区| 中文字幕久热精品视频在线| 中文一区一区三区高中清不卡免费| 97久久夜色精品国产九色| 日韩欧美高清在线播放| 国产男女激情视频| av影院午夜一区| 狠狠色狠狠色综合日日小说| 欧产日产国产v| 欧美日韩在线观看一区二区| 欧美一级淫片aaaaaa| 欧美大片免费观看在线观看网站推荐| 成人国产激情在线| 日本福利一区二区三区| 国产一区二区三区的电影 | 色婷婷色综合| 国产精品乱码久久久久| 久久综合999| www.毛片.com| 日韩国产高清视频在线| 国产欧洲在线| 精品欧美一区二区在线观看视频| 激情婷婷欧美| 催眠调教后宫乱淫校园| 亚洲电影一区二区三区| 黄色美女一级片| 欧美精品激情视频| 欧美日本三级| 男女裸体影院高潮| 国产成人精品三级| 久久免费播放视频| 亚洲丁香久久久| 国产盗摄——sm在线视频| 久久久久免费网| 久久福利毛片| 久久久久久成人网| 欧美浪妇xxxx高跟鞋交| 国产欧美日韩综合精品一区二区三区| 国产亚洲精品久久久| 黑人一区二区三区| 欧美亚洲视频一区| 国产精品资源在线观看| 欧美成人精品欧美一级| 日韩欧美你懂的| 98色花堂精品视频在线观看| 久久riav二区三区| 日本伊人精品一区二区三区观看方式 | 无码人妻丰满熟妇区96| 91免费版在线看| 中文字幕免费高清在线观看| 久久久www成人免费精品| 欧美日韩中出| 高清在线观看免费| 中文字幕av不卡| www.久久精品.com| 欧美中文在线免费| 手机亚洲手机国产手机日韩| 日韩网站在线免费观看| 91免费精品国自产拍在线不卡| 五月天中文字幕| 欧美成人精品激情在线观看| 国产精品流白浆在线观看| 亚洲成熟丰满熟妇高潮xxxxx| 国产精品系列在线| 午夜精品一区二区三| 日韩av123| 亚洲经典一区| 少妇户外露出[11p]| 欧美三级电影在线观看| 欧美人与动牲性行为| 欧美一区二区在线视频观看| 激情综合网av| 日韩欧美一区二区一幕| 日韩在线国产精品| 国产乱人伦丫前精品视频| 国产视频一区二区视频| 一区二区免费看| 国产高清在线观看| 99在线视频播放| 免费观看日韩av| 男人的天堂一区二区| 日韩在线观看高清| 色88888久久久久久影院| 网站在线你懂的| 日韩欧美一区二区三区|