Java:递归永远不会达到正确的条件

atom2ueki

这是我的自递归方法的代码。问题是第三个递归,比较<3.0, 4.0, 4.0><2.0, 4.0, 1.0>,它应该遇到情况3,但是从显示的日志来看,它从来没有遇到。

private static List<Position> overlaps (List<Position> sortedlist)  
    {

        List<Position> tony = new ArrayList<Position>();

        if(count<=sortedlist.size()-1)
        {   
            //handle a
            Position a = sortedlist.get(count);

            System.out.println("**new recursive start!");
            System.out.println("sortedlist size is:"+sortedlist.size());
            System.out.println("overlapnum is:"+overlapnum);
            System.out.println("count number is:"+count);
            System.out.println("the sortedlist of this term:"+sortedlist);

            //check from top to bottom
            for (int i=count+overlapnum+1 ;i<sortedlist.size()-count-overlapnum;i++)
            {
                //case1
                //and
                //    ------
                // ------
                if ( a.start()>sortedlist.get(i).start() &&a.start()<sortedlist.get(i).end() && a.end()>sortedlist.get(i).end() && a.height()>sortedlist.get(i).height() && a.equals(sortedlist.get(i))==false) 
                {
                    System.out.println("hit case1");
                    tony.add(new Position(a.start(), sortedlist.get(i).end(), a.height()-sortedlist.get(i).height()));
                    a= new Position(sortedlist.get(i).end(),a.end(),a.height());
                    sortedlist.set(count, a);
                    overlapnum++;
                    overlaps(sortedlist);

                }
                //case2
                //and
                //------
                //    ------
                else if(a.end()>sortedlist.get(i).start() && a.end()<sortedlist.get(i).end() &&a.start()<sortedlist.get(i).start() && a.height()>sortedlist.get(i).height() && a.equals(sortedlist.get(i))==false)
                {
                    System.out.println("hit case2");
                    //System.out.println(count);
                    tony.add(new Position(sortedlist.get(i).start(), a.end(), a.height()-sortedlist.get(i).height()));
                    a=new Position(a.start(),sortedlist.get(i).start(),a.height());
                    sortedlist.set(count, a);
                    overlapnum++;
                    overlaps(sortedlist);
                }
                //case3
                //  -------
                //-----------
                //***!!!!problem: why the third time recursive never hit case3?????
                else if(a.start()>=sortedlist.get(i).start() && a.end()<=sortedlist.get(i).end() && a.height()>sortedlist.get(i).height() && a.equals(sortedlist.get(i))==false)
                {                   
                    System.out.println("hit case3");
                    tony.add(new Position(a.start(),a.end(),a.height()-sortedlist.get(i).height()));
                    overlapnum=0;
                    count++;
                }
                //no overlaps found, directly write propping height
                else
                {
                    System.out.println("hit else");
                    tony.add(new Position(a.start(),a.end(),a.height()));
                    overlapnum=0;
                    count++;

                }
            }
            return tony;
       }
       return null;
    }

下面的目录输出

**new recursive start!(1)
sortedlist size is:4
overlapnum is:0
count number is:0
the sortedlist of this turn:[<2.0, 5.0, 4.0>, <4.0, 7.0, 3.0>, <1.0, 3.0, 2.0>, <2.0, 4.0, 1.0>]
hit case2
**new recursive start!(2)
sortedlist size is:4
overlapnum is:1
count number is:0
the sortedlist of this turn:[<2.0, 4.0, 4.0>, <4.0, 7.0, 3.0>, <1.0, 3.0, 2.0>, <2.0, 4.0, 1.0>]
hit case1
**new recursive start!(3)
sortedlist size is:4
overlapnum is:2
count number is:0
the sortedlist of this turn:[<3.0, 4.0, 4.0>, <4.0, 7.0, 3.0>, <1.0, 3.0, 2.0>, <2.0, 4.0, 1.0>]

第三个递归应该hit case 3,但是从日志结果来看,似乎从未达到任何条件,非常奇怪。

泰勒·李
for (int i=count+overlapnum+1 ;i<sortedlist.size()-count-overlapnum;i++)

for (int i=0+2+1 ;i<4-0-2;i++)

for (int i=3 ;i<2;i++)

3 <2为假。您永远不会跑步,因此没有条件受到打击。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用Java释放键时速度永远不会达到0

来自分类Dev

递归 CTE 永远不会完成

来自分类Dev

程序永远不会达到某个点

来自分类Dev

周期永远不会达到最终值

来自分类Dev

递归程序永远不会进入递归?

来自分类Dev

正确实现的递归惰性迭代器函数永远不会堆栈溢出吗?

来自分类Dev

“if”语句,永远不会执行条件

来自分类Dev

getopt switch语句永远不会达到默认大小写

来自分类Dev

Javascript-计数变量永远不会达到0吗?

来自分类Dev

深度优先搜索永远不会达到目标状态

来自分类Dev

BIML永远不会正确生成Package ProtectionLevel

来自分类Dev

其他条件永远不会触发

来自分类Dev

永远不会应用条件格式设置规则

来自分类Dev

循环永远不会在递归函数内完成

来自分类Dev

达到一定条件后终止递归

来自分类Dev

当条件永远不会被满足时,循环永远不会发生?

来自分类Dev

Java构造函数永远不会完成构造

来自分类Dev

尝试从Java运行gsutils永远不会返回

来自分类Dev

Java:保证非最终引用字段永远不会被读取为null的正确方法是什么?

来自分类Dev

指针在链表深层复制构造函数中永远不会达到null

来自分类Dev

电池电量永远不会达到100%,而是保持在99%

来自分类Dev

笔记本电脑电池电量永远不会达到100%

来自分类Dev

具有RGB的UIColor颜色永远不会获得正确的颜色

来自分类Dev

“正确”永远不会改变垂直对齐方式吗?

来自分类Dev

在Chrono程序中永远不会触发条件语句

来自分类Dev

为什么这个 js IF 条件永远不会评估为真?

来自分类Dev

即使条件正确,如果条件也不会执行

来自分类常见问题

递归ConcurrentHashMap.computeIfAbsent()调用永远不会终止。错误还是“功能”?

来自分类Dev

NOT递归函数中的F#“此规则将永远不会匹配”表达式

Related 相关文章

  1. 1

    用Java释放键时速度永远不会达到0

  2. 2

    递归 CTE 永远不会完成

  3. 3

    程序永远不会达到某个点

  4. 4

    周期永远不会达到最终值

  5. 5

    递归程序永远不会进入递归?

  6. 6

    正确实现的递归惰性迭代器函数永远不会堆栈溢出吗?

  7. 7

    “if”语句,永远不会执行条件

  8. 8

    getopt switch语句永远不会达到默认大小写

  9. 9

    Javascript-计数变量永远不会达到0吗?

  10. 10

    深度优先搜索永远不会达到目标状态

  11. 11

    BIML永远不会正确生成Package ProtectionLevel

  12. 12

    其他条件永远不会触发

  13. 13

    永远不会应用条件格式设置规则

  14. 14

    循环永远不会在递归函数内完成

  15. 15

    达到一定条件后终止递归

  16. 16

    当条件永远不会被满足时,循环永远不会发生?

  17. 17

    Java构造函数永远不会完成构造

  18. 18

    尝试从Java运行gsutils永远不会返回

  19. 19

    Java:保证非最终引用字段永远不会被读取为null的正确方法是什么?

  20. 20

    指针在链表深层复制构造函数中永远不会达到null

  21. 21

    电池电量永远不会达到100%,而是保持在99%

  22. 22

    笔记本电脑电池电量永远不会达到100%

  23. 23

    具有RGB的UIColor颜色永远不会获得正确的颜色

  24. 24

    “正确”永远不会改变垂直对齐方式吗?

  25. 25

    在Chrono程序中永远不会触发条件语句

  26. 26

    为什么这个 js IF 条件永远不会评估为真?

  27. 27

    即使条件正确,如果条件也不会执行

  28. 28

    递归ConcurrentHashMap.computeIfAbsent()调用永远不会终止。错误还是“功能”?

  29. 29

    NOT递归函数中的F#“此规则将永远不会匹配”表达式

热门标签

归档