关于网友提出的“速归速归 如果不归 新手 问个递归的小程序”问题疑问,本网通过在网上对“速归速归 如果不归 新手 问个递归的小程序”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:速归速归 如果不归 新手 问个递归的小程序
描述:递归java web
private void delete (Connection conn, int id, boolean isLeaf ) {
//delete all the children
if(!isLeaf) {
Statement stmt = DB.createStatement(conn);
String sql = " select * from article where pid = " + id;
ResultSet rs = DB.getResultSet(stmt,sql);
try{
while (rs.next()) {
delete(conn,rs.getInt("id"), rs.getInt("isLeaf")==0);
}
} catch(SQLException e) {
e.printStackTrace();
} finally{
DB.close(rs);
DB.close(stmt);
}
}
//delete it self
String sql = " delete from article where id = " + id;
DB.executeUpdate(conn,sql);
}
然后调用此函数delete(conn,id,isLeaf)
简单说明一下,这是删除帖子和他的子帖的小程序,我不太明白的是当帖子不是叶子节点时会执行if 后面的语句知道获得他的叶子贴,然后删除。可是我不明白的是我觉得这个小程序只能删除叶子贴,然而不是叶子贴的一概删除不了,因为通过调用会一直执行if后面的帖子直到拿到叶子贴,可其他的非叶子贴拿不到啊。。。 事实上所有帖子都能删除,但我不知道我想的哪里错了,请大家帮忙
解决方案1: 叶子贴删除完了,原来的非叶子贴就变成叶子贴了
解决方案2: 不一定非要用递归算法呀!你可以在点一个阶段的时候得到他的id,然后再子节点的那个列查询是否有数据,返回int类型,如果返回得值大于零则证明这个节点下有子集,否则就是没有,这样就可以判断是否可以删除了!
解决方案3: 你这个应该有自关联吧 ,要先删除子节点再去删除父节点 ,要不然会报错的
以上介绍了“速归速归 如果不归 新手 问个递归的小程序”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1787848.html