-1
void FireSimulator::spread()
{
int numberLoops;
if(x>y)
numberLoops=x;
else
numberLoops=y;
for(int k=0; k<=numberLoops+1; k++)
{
for(int i=1; i<x-1; i++)
{
for(int j=1; j<y-1; j++)
{
if((forest[i][j].getState()==2) && (forest[i][j+1].getState()==1))
{
forest[i][j+1]=2;
Print();
}
if((forest[i][j].getState()==2) && (forest[i+1][j].getState()==1))
{
forest[i+1][j]=2;
Print();
}
if((forest[i][j].getState()==2) && (forest[i][j-1].getState()==1))
{
forest[i][j-1]=2;
Print();
}
if((forest[i][j].getState()==2) && (forest[i-1][j].getState()==1))
{
forest[i-1][j]=2;
Print();
}
}
} }
}
FireSimulator类模拟火灾蔓延。 A 2表示燃烧的树,1表示树,0表示空白点。该函数检查当前单元格的邻居。如果一棵树正在燃烧,并且旁边有一棵树,那么它旁边的树就会燃烧。它需要检查森林中的所有单元(数组)。我用3 for循环做了它,但如何用递归做到这一点?如何将循环转换为递归?
考虑接受x/y坐标来检查的函数。检查指定的单元格,然后为每个邻居调用与邻居坐标相同的函数。 – kicken