# Thread: recursive function problem

1. ## recursive function problem

this function supposed to open all empty spaces..
but it does not work properly..

Code:
```void openemptyspace(int x, int y)
{

/* Declarations */
int i;
int j;

/* nested for loops and if statments*/
for(i = -1; i <= 1; i++)
{
for(j = -1; j <= 1; j++)
{
if(showmines[x + i][y + j] == '-' )
{
showmines[x + i][y + j] = mines[x + i][y + j];
if(showmines[x + i][y + j] == '0' )
{
openemptyspace(x + i, y + j);
}  /* end if */
}     /* end outer if*/
}   /*end inner for loop */
}   /* end outer for loop */
}```

2. >>but it does not work properly..
and? What does it do or not do that makes you think its wrong?

3. ## Re: recursive function problem

Originally posted by jk81
this function supposed to open all empty spaces..
but it does not work properly..

Code:
```void openemptyspace(int x, int y)
{

/* Declarations */
int i;
int j;

/* nested for loops and if statments*/
for(i = -1; i <= 1; i++)
{
for(j = -1; j <= 1; j++)
{
if(showmines[x + i][y + j] == '-' )
{
showmines[x + i][y + j] = mines[x + i][y + j];
if(showmines[x + i][y + j] == '0' )
{
openemptyspace(x + i, y + j);
}  /* end if */
}     /* end outer if*/
}   /*end inner for loop */
}   /* end outer for loop */
}```

Usually in recursive functions the recursive part (the part where you call the function again) is not nested within a condition, and the "base case" is in an conditional statement. This style guarentees the the recursive call unless the base case is statisfied. With your style the:

Code:
```if(showmines[x + i][y + j] == '0' )
{
openemptyspace(x + i, y + j);
}  /* end if */```
might not get called.

cheers

Popular pages Recent additions