即使在递归调用后也不会发生递归

问题描述

即使该函数本质上是递归的,也永远不会递归。我完全不知道为什么会这样。

public void fill(Graphics g,View v,Point interior,Color boundaryColor,Color interiorColor) {
int x = interior.getx();
int y = interior.gety();
System.out.println("x: "+x+" y: "+y);
int pixelColor = v.getPixel(x,y);//always negative or zero
    
if( pixelColor == 0) {
    System.out.println("Exit case");
    return;
}
    
if( (pixelColor != boundaryColor.getRGB()) && (pixelColor != interiorColor.getRGB())) {
    System.out.println("*");
    interior.drawPoint(g,v);
        
    int nextX,nextY;
        
    nextX = x+1;
    nextY = y;
                
    Point p= new Point(v,nextX,nextY);
        
    this.fill(g,v,p,boundaryColor,interiorColor);
}
    
}

说明: 视图v,图形g和Point内部是自定义对象;

如果该函数本质上是递归的,则可能会打印“达到退出案例时的退出案例”

代码执行结果:

enter image description here

解决方法

函数的递归恰好如其产生的输出所示。它没有执行的操作是打印“退出情况”,因为pixelColor永远不会为0。调试代码/打印pixelColor的值,然后尝试找出为什么它永远不会为0。

,

变量 pixelColor 似乎没有达到0,这就是为什么您的代码未打印“退出案例”的原因

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...