Мне нужно было бы преобразовать эту функцию в итеративную, но все, о чем я могу думать, - это рекурсия, и когда я думаю об итеративной, в моем сознании получается беспорядок (так называемый, для многих вложенный) ...
void FrattaleRicorsivo(char scacchiera[][32], int n, int m, bool black)
{
int mediano;
//Soluzione del caso di base.
if (m == 0)
{
return;
}
else
{
m--;
mediano = (n - 1)/2;
if (black)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
scacchiera[i][j] = 'D';
}
}
FrattaleRicorsivo(&scacchiera[0][0], mediano + 1, m, true);
FrattaleRicorsivo(&scacchiera[0][mediano + 1], n - mediano - 1, m, false);
FrattaleRicorsivo(&scacchiera[mediano + 1][0], mediano + 1, m, true);
FrattaleRicorsivo(&scacchiera[mediano + 1][mediano + 1], n - mediano - 1, m, true);
}
else
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
scacchiera[i][j] = ' ';
}
}
}
}
}
void main()
{
int n = 32;
char scacchiera[n][n];
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scacchiera[i][j] = 'X';
}
}
FrattaleRicorsivo(scacchiera, n, 6, true);
}
Двумерный массив начинается с черного цвета, он же обозначается буквой «X».По сути, эта функция делит двумерный массив на 4 квадрата, и верхний правый квадрат становится «белым», а остальные имеют D и отмечены черным.Затем он разделяет каждый из этих квадратов на еще 4 квадрата с тем же правилом, за исключением того факта, что если квадрат белый, он остается белым.Как бы я сделал это итеративно без написания путаницы?