08-08
12

递归

被自己的粗心大意忙活了一上午,结果是笔误,如下程序,是一个判断要求,父分类不能移动到子分类中:

public boolean checkJieDian(Catalog catalogNow, Catalog catalogMove) {

    CatalogService s = new CatalogService();
    
        if(catalogMove==null){
            log.info("最后还是没有找到,那么就返回");
            return true;
        }
    
    catalogMove = s.getCatalog(catalogMove.getId());

    // 如果目标分类有父级
    if (catalogMove.getParentCatalog() != null) {
        // 取得父级
        Catalog parentCatalogMove = catalogMove.getParentCatalog();

        // 如果目标分类为现有分类的父
        // 看看父中ID和现有是否相等,如果相等,现有的属于移动的父
        if (parentCatalogMove.getId() == catalogNow.getId()) {
        log.info("parentCatalogMove.getId():"+parentCatalogMove.getId());
        log.info("catalogNow.getId():"+catalogNow.getId());
        log.info("父类不能移动到子类!!!!!!!!!!!");
        return false;
        }
        else {
        log.info("进入递归");
        // 否则,移动再取父 ,再次去数据库取得,避免溢出,避免-no session
        parentCatalogMove = s.getCatalog(parentCatalogMove.getId());
        return  this.checkJieDian(catalogNow, parentCatalogMove);
                                
        }
    }
    
    if (catalogMove.getParentCatalog() == null) {
        return true;
    }
    return true;
    }


结果我发现这程序怎么跑都返回true,找了两小时,抽了两根烟,到了中午吃完饭回来,打个饱嗝,结果发现在递归后面没有加返回(红色就是),那么当然是无论怎么进行,递归的最后都是true了,去掉就好了!

[本日志由 blurxx 于 2008-08-12 08:01 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 递归 无限分类
相关日志:
评论: 0 | 引用: 0 | 查看次数: 622
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭