<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      java遞歸獲取部門數(shù)方法

      前言

      遞歸(Recursion)在編程中是一個(gè)非常重要的概念。簡單來說,遞歸指的是一個(gè)函數(shù)在其定義中直接或間接調(diào)用自身。這種調(diào)用機(jī)制允許函數(shù)通過分解問題為更小的相似子問題來解決復(fù)雜問題。

      ?遞歸的定義?
      遞歸是一種在函數(shù)定義中調(diào)用函數(shù)自身的方法。它通常包含一個(gè)或多個(gè)基準(zhǔn)情況(base case),用于結(jié)束遞歸調(diào)用鏈,以及一個(gè)或多個(gè)遞歸步驟,用于將問題分解為更小的子問題。

      ?遞歸的原理?

      1.基準(zhǔn)情況?:這是遞歸調(diào)用的終止條件。當(dāng)滿足基準(zhǔn)情況時(shí),函數(shù)將不再調(diào)用自身,而是返回結(jié)果。
      2.遞歸步驟?:在遞歸步驟中,函數(shù)會(huì)調(diào)用自身來解決一個(gè)規(guī)模更小的相似問題。這個(gè)過程會(huì)一直持續(xù),直到達(dá)到基準(zhǔn)情況。

      遞歸的示例?

      現(xiàn)在我將獲取部門樹作為示例

      1.示例數(shù)據(jù)準(zhǔn)備

      /*
       Navicat Premium Data Transfer
      
       Source Server         : localhost-本地
       Source Server Type    : MySQL
       Source Server Version : 80036
       Source Host           : localhost:3306
       Source Schema         : test
      
       Target Server Type    : MySQL
       Target Server Version : 80036
       File Encoding         : 65001
      
       Date: 22/04/2025 01:41:05
      */
      
      SET NAMES utf8mb4;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for sys_dept
      -- ----------------------------
      DROP TABLE IF EXISTS `sys_dept`;
      CREATE TABLE `sys_dept`  (
        `dept_id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '部門id',
        `parent_id` bigint(0) NULL DEFAULT 0 COMMENT '父部門id',
        `ancestors` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '祖級(jí)列表',
        `dept_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '部門名稱',
        `order_num` int(0) NULL DEFAULT 0 COMMENT '顯示順序',
        `leader` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '負(fù)責(zé)人',
        `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '聯(lián)系電話',
        `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '郵箱',
        `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '部門狀態(tài)(0正常 1停用)',
        `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '刪除標(biāo)志(0代表存在 2代表刪除)',
        `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '創(chuàng)建者',
        `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
        `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者',
        `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時(shí)間',
        PRIMARY KEY (`dept_id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 210 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '部門表' ROW_FORMAT = Dynamic;
      
      -- ----------------------------
      -- Records of sys_dept
      -- ----------------------------
      INSERT INTO `sys_dept` VALUES (100, 0, '0', '中國移動(dòng)', 0, '張三', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', 'admin', '2025-03-04 10:15:38');
      INSERT INTO `sys_dept` VALUES (101, 100, '0,100', '深圳總公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);
      INSERT INTO `sys_dept` VALUES (102, 100, '0,100', '長沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);
      INSERT INTO `sys_dept` VALUES (103, 100, '0,100', '研發(fā)部門', 1, '若依', '', '', '0', '0', 'admin', '2025-02-17 08:58:32', 'admin', '2025-03-12 10:26:18');
      INSERT INTO `sys_dept` VALUES (104, 101, '0,100,101', '市場部門', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);
      INSERT INTO `sys_dept` VALUES (105, 101, '0,100,101', '測試部門', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);
      INSERT INTO `sys_dept` VALUES (106, 101, '0,100,101', '財(cái)務(wù)部門', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);
      INSERT INTO `sys_dept` VALUES (107, 101, '0,100,101', '運(yùn)維部門', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);
      INSERT INTO `sys_dept` VALUES (108, 102, '0,100,102', '市場部門', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);
      INSERT INTO `sys_dept` VALUES (109, 102, '0,100,102', '財(cái)務(wù)部門', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2025-02-17 08:58:32', '', NULL);

      2.獲取組裝的部門樹:

      public List<SysDept> selectDeptList(SysDept dept) {
              // 最終的部門樹結(jié)果
              List<SysDept>  deptTree = new ArrayList<>();
              try {
                  // 1.獲取所有部門信息
                  List<SysDept> sysDebts = sysDeptMapper.selectDeptList(dept);
                  // 2.獲取根節(jié)點(diǎn)的部門信息(parentId=0的部門為根節(jié)點(diǎn))
                  List<SysDept> rootDept = sysDebts.stream().filter(s-> s.getParentId().equals(0L))
                          .collect(Collectors.toList());
                  for (SysDept root : rootDept) {
                      // 3.遞歸獲取子節(jié)點(diǎn)
                      SysDept tree = getChildren(root, sysDebts);
                      // 4.添加到部門樹中
                      deptTree.add(tree);
                  }
                  return deptTree;
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
          }

      3.遞歸獲取子部門:

      /**
           * 遞歸獲取子節(jié)點(diǎn)
           * @param rootDept 根節(jié)點(diǎn)
           * @param sysDepts 所有部門信息
           * @return 樹形結(jié)構(gòu)的部門信息
           */
          private SysDept getChildren(SysDept rootDept, List<SysDept> sysDepts) {
              ArrayList<SysDept> children = new ArrayList<>();
              for (SysDept dept : sysDepts) {
                  if (rootDept.getDeptId().equals(dept.getParentId())){
                      children.add(getChildren(dept, sysDepts));
                  }
              }
              rootDept.setChildren(children);
              return rootDept;
      
          }

      4.接口數(shù)據(jù)返回:

      [
          {
              "deptId": 100,
              "parentId": 0,
              "ancestors": "0",
              "deptName": "中國移動(dòng)",
              "orderNum": 0,
              "leader": "張三",
              "phone": "15888888888",
              "email": "ry@qq.com",
              "status": "0",
              "delFlag": "0",
              "parentName": null,
              "children": [
                  {
                      "deptId": 101,
                      "parentId": 100,
                      "ancestors": "0,100",
                      "deptName": "深圳總公司",
                      "orderNum": 1,
                      "leader": "若依",
                      "phone": "15888888888",
                      "email": "ry@qq.com",
                      "status": "0",
                      "delFlag": "0",
                      "parentName": null,
                      "children": [
                          {
                              "deptId": 104,
                              "parentId": 101,
                              "ancestors": "0,100,101",
                              "deptName": "市場部門",
                              "orderNum": 2,
                              "leader": "若依",
                              "phone": "15888888888",
                              "email": "ry@qq.com",
                              "status": "0",
                              "delFlag": "0",
                              "parentName": null,
                              "children": [],
                              "createBy": "admin",
                              "createTime": "2025-02-17 00:58:32",
                              "updateBy": null,
                              "updateTime": null
                          },
                          {
                              "deptId": 105,
                              "parentId": 101,
                              "ancestors": "0,100,101",
                              "deptName": "測試部門",
                              "orderNum": 3,
                              "leader": "若依",
                              "phone": "15888888888",
                              "email": "ry@qq.com",
                              "status": "0",
                              "delFlag": "0",
                              "parentName": null,
                              "children": [],
                              "createBy": "admin",
                              "createTime": "2025-02-17 00:58:32",
                              "updateBy": null,
                              "updateTime": null
                          },
                          {
                              "deptId": 106,
                              "parentId": 101,
                              "ancestors": "0,100,101",
                              "deptName": "財(cái)務(wù)部門",
                              "orderNum": 4,
                              "leader": "若依",
                              "phone": "15888888888",
                              "email": "ry@qq.com",
                              "status": "0",
                              "delFlag": "0",
                              "parentName": null,
                              "children": [],
                              "createBy": "admin",
                              "createTime": "2025-02-17 00:58:32",
                              "updateBy": null,
                              "updateTime": null
                          },
                          {
                              "deptId": 107,
                              "parentId": 101,
                              "ancestors": "0,100,101",
                              "deptName": "運(yùn)維部門",
                              "orderNum": 5,
                              "leader": "若依",
                              "phone": "15888888888",
                              "email": "ry@qq.com",
                              "status": "0",
                              "delFlag": "0",
                              "parentName": null,
                              "children": [],
                              "createBy": "admin",
                              "createTime": "2025-02-17 00:58:32",
                              "updateBy": null,
                              "updateTime": null
                          }
                      ],
                      "createBy": "admin",
                      "createTime": "2025-02-17 00:58:32",
                      "updateBy": null,
                      "updateTime": null
                  },
                  {
                      "deptId": 103,
                      "parentId": 100,
                      "ancestors": "0,100",
                      "deptName": "研發(fā)部門",
                      "orderNum": 1,
                      "leader": "若依",
                      "phone": "",
                      "email": "",
                      "status": "0",
                      "delFlag": "0",
                      "parentName": null,
                      "children": [],
                      "createBy": "admin",
                      "createTime": "2025-02-17 00:58:32",
                      "updateBy": null,
                      "updateTime": null
                  },
                  {
                      "deptId": 102,
                      "parentId": 100,
                      "ancestors": "0,100",
                      "deptName": "長沙分公司",
                      "orderNum": 2,
                      "leader": "若依",
                      "phone": "15888888888",
                      "email": "ry@qq.com",
                      "status": "0",
                      "delFlag": "0",
                      "parentName": null,
                      "children": [
                          {
                              "deptId": 108,
                              "parentId": 102,
                              "ancestors": "0,100,102",
                              "deptName": "市場部門",
                              "orderNum": 1,
                              "leader": "若依",
                              "phone": "15888888888",
                              "email": "ry@qq.com",
                              "status": "0",
                              "delFlag": "0",
                              "parentName": null,
                              "children": [],
                              "createBy": "admin",
                              "createTime": "2025-02-17 00:58:32",
                              "updateBy": null,
                              "updateTime": null
                          },
                          {
                              "deptId": 109,
                              "parentId": 102,
                              "ancestors": "0,100,102",
                              "deptName": "財(cái)務(wù)部門",
                              "orderNum": 2,
                              "leader": "若依",
                              "phone": "15888888888",
                              "email": "ry@qq.com",
                              "status": "0",
                              "delFlag": "0",
                              "parentName": null,
                              "children": [],
                              "createBy": "admin",
                              "createTime": "2025-02-17 00:58:32",
                              "updateBy": null,
                              "updateTime": null
                          }
                      ],
                      "createBy": "admin",
                      "createTime": "2025-02-17 00:58:32",
                      "updateBy": null,
                      "updateTime": null
                  }
              ],
              "createBy": "admin",
              "createTime": "2025-02-17 00:58:32",
              "updateBy": null,
              "updateTime": null
          }
      ]

      注意事項(xiàng)?

      • ?效率問題?:遞歸可能引發(fā)棧溢出或重復(fù)計(jì)算(如斐波那契數(shù)列的樸素遞歸),需結(jié)合尾遞歸優(yōu)化動(dòng)態(tài)規(guī)劃改進(jìn)。
      • ?理解難度?:需通過“遞進(jìn)+回歸”過程分析,如階乘的逐步展開與回溯。

      ?總結(jié)?:遞歸是一種強(qiáng)大的編程范式,適用于問題可分解為自相似結(jié)構(gòu)的場景,但需謹(jǐn)慎設(shè)計(jì)終止條件和優(yōu)化性能。

      posted @ 2025-04-17 15:41  [奮斗]  閱讀(107)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 欧美精品黑人粗大破除| 国产精品天干天干综合网| 亚洲成人高清av在线| 大地资源高清免费观看| 亚洲国产一区二区三区亚瑟| a级国产乱理伦片在线观看al | 黄色不卡视频一区二区三区| 中文字幕免费不卡二区| 亚洲午夜理论无码电影| 亚洲精品日本一区二区| 老司机午夜免费精品视频| 国产极品尤物粉嫩在线观看| 国产精品电影久久久久电影网| 浦北县| 久久人妻国产精品| 亚洲av乱码久久亚洲精品| 在线观看无码av五月花| jizz国产免费观看| 春菜花亚洲一区二区三区| 久久精品国产亚洲av麻豆不卡 | 亚洲综合色网一区二区三区| 国产欧美精品aaaaaa片| 中文字幕人妻中文AV不卡专区| 蜜臀精品国产高清在线观看| 久热久热久热久热久热久热| 麻豆成人精品国产免费| 宝贝腿开大点我添添公视频免| 亚洲精品成人一二三专区| 97国产精品人人爽人人做| 人妻熟女一二三区夜夜爱| 日本丰满少妇裸体自慰| 一本久道久久综合中文字幕| 69人妻精品中文字幕| 2020国产欧洲精品网站| av色蜜桃一区二区三区| 国产v综合v亚洲欧美大天堂| аⅴ天堂中文在线网| 丰满熟妇人妻av无码区| 国产精品亚洲综合网一区| 国产乱码1卡二卡3卡四卡5 | 成人无码一区二区三区网站|