如何解决即使在递归调用后也不会发生递归
即使该函数本质上是递归的,也永远不会递归。我完全不知道为什么会这样。
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,这就是为什么您的代码未打印“退出案例”的原因
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。