http://tinyurl.com/dy4dwf9(Google图书。原始链接很长。)
有人可以解释一下这个递归程序是如何工作的吗?我不明白这不会导致无限循环。当它到达“eraseBlob(row-1,col);”时,它不会继续循环回到同样的方法;因此,它将重复“eraseBlob(row-1,col);?”最后,它说如果“image [row] [col] = WHITE;”移动到最后会导致无限循环但是,我不明白它是如何导致无限循环的,即使它是在开头。我不完全确定代码试图完成什么,我已多次阅读它。我相信它正试图将一个细胞改为白色以及原始细胞的上方,上方,左侧和右侧的细胞。如果我不对,请纠正我。
谢谢!
答案 0 :(得分:0)
该算法依次查看每个单元的邻居。如果细胞是黑色的,它会变成白色,然后看着邻居。对于每个黑色邻居,它将查看所有黑色邻居,并重复。因此,通过在查看邻居之前将初始单元设置为白色,它可以防止无限循环(因为如果B是A的邻居,并且两者都是黑色,那么A将看B将看A将... - 但是如果我们将A设置为白色,那么当B看到它时,它不会打扰A的邻居,并且没有无限循环)。