0

http://tinyurl.com/dy4dwf9(谷歌图书。原始链接很长。)

有人可以解释一下这个递归程序是如何工作的吗?我不明白这如何不会导致无限循环。当它到达“eraseBlob(row-1, col);”时,它不会一直循环回到同样的方法吗?因此,它将重复“eraseBlob(row-1, col);?” 最后,它说如果“image[row][col] = WHITE;” 移到最后会导致无限循环,但是,我不明白即使在开始时它也不会导致无限循环。我不完全确定代码试图完成什么,我已经读过很多遍了。我相信它正在尝试将 a 单元格以及原始单元格的下方、上方、左侧和右侧的单元格更改为白色。如果我不正确,请纠正我。

谢谢你!

4

1 回答 1

0

该算法依次查看每个单元的邻居。如果单元格是黑色的,它将变成白色,并查看邻居。对于每个黑人邻居,它将查看所​​有黑人邻居,然后重复。因此,通过在查看邻居之前将初始单元格设置为白色,它可以防止无限循环(因为如果 B 是 A 的邻居,并且两者都是黑色的,那么 A 将查看 B 将查看 A 将... -但是如果我们把A设置为白色,那么B看的时候就不会打扰A的邻居了,也就没有无限循环了)。

于 2013-04-08T02:29:57.150 回答