问题描述
即使该函数本质上是递归的,也永远不会递归。我完全不知道为什么会这样。
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内部是自定义对象;
如果该函数本质上是递归的,则可能会打印“达到退出案例时的退出案例”
代码执行结果:
解决方法
函数的递归恰好如其产生的输出所示。它没有执行的操作是打印“退出情况”,因为pixelColor
永远不会为0。调试代码/打印pixelColor
的值,然后尝试找出为什么它永远不会为0。
变量 pixelColor 似乎没有达到0,这就是为什么您的代码未打印“退出案例”的原因