当前位置: 代码迷 >> J2SE >> 递归方法,该怎么处理
  详细解决方案

递归方法,该怎么处理

热度:38   发布时间:2016-04-24 12:47:16.0
递归方法
下面的一个方法是删除一个目录树参数指定该目录的id及是否是叶子节点(0为叶子节点返回true)
具体实现是有递归先删除该节点的叶子节点,最后删除本身(执行的delete语句)。
我的问题是:删除叶子节点(子目录)并没有调用delete语句怎么就删除了呢??


Java code
public static void categoryDelete(int id, boolean isLeaf) {        Connection conn =  null ;        Statement stmt = null ;        ResultSet rs = null ;        String sql_child = "select * from category where pid = " + id;        conn = DB.getConn();        stmt = DB.getStmt(conn);        rs = DB.executeQuery(stmt, sql_child);        if(!isLeaf){            try {                while (rs.next()) {                     categoryDelete(rs.getInt("id"), rs.getInt("leaf")==0);                }            } catch (SQLException e) {                e.printStackTrace();            }finally{            DB.closeRs(rs);            DB.closeStmt(stmt);          }      }      //删除该目录    String sql_self = "delete from category where id = "+ id ;    DB.executeUpdate(conn, sql_self);    }


------解决方案--------------------
递归的方法只要一步一步走下去就清楚了,能调试的话单步执行一下吧,不要仅凭主观
------解决方案--------------------
删除的语句写在递归的方法里面,一层层找下去,当找到叶子节点的时候就自动执行删除的语句了。
------解决方案--------------------
//主要是这里 id
String sql_self = "delete from category where id = "+ id ;
因为这里的ID是是递归传过来的ID 直接就删除了。

------解决方案--------------------
探讨
//主要是这里 id
String sql_self = "delete from category where id = "+ id ;
因为这里的ID是是递归传过来的ID 直接就删除了。


------解决方案--------------------
一步一步走下去,一层层找下去,
String sql_self = "delete from category where id = "+ id ; 

------解决方案--------------------
因为你最后删除了节点了。
  相关解决方案