У меня проблема с одной рекурсивной функцией, и она не относится к указателю, потому что я пытался без использования указателя, и я все еще получаю эту ошибку, это ошибка компилятора:
Thread 1 received signal SIGSEGV, Segmentation fault.
0x0000000000402105 in
neighbour (arr=0x62fbd0, i=0, j=4, r=false, l=true, u=true, b=false, number=2) at main.cpp:151
151
neighbour(arr, i, j - 2, right(arr, i, j - 2), left(arr, i, j - 2), up(arr, i, j - 2), bottom(arr, i, j - 2), number);
и мой код функции:
void neighbour(int *arr, int i, int j, bool r, bool l, bool u, bool b, int number)
{
if (!(r || l || b || u))
{
return;
}
if (r)
{
*((arr + i * Size) + j + 2) = number;
neighbour(arr, i, j + 2, right(arr, i, j + 2), left(arr, i, j + 2), up(arr, i, j + 2), bottom(arr, i, j + 2), number);
}
if (l)
{
*((arr + i * Size) + j - 2) = number;
neighbour(arr, i, j - 2, right(arr, i, j - 2), left(arr, i, j - 2), up(arr, i, j - 2), bottom(arr, i, j - 2), number);
}
if (u)
{
*((arr + (i + 2) * Size) + j) = number;
neighbour(arr, i + 2, j, right(arr, i + 2, j), left(arr, i + 2, j), up(arr, i + 2, j), bottom(arr, i + 2, j), number);
}
if (b)
{
*((arr + (i - 2) * Size) + j) = number;
neighbour(arr, i - 2, j, right(arr, i - 2, j), left(arr, i - 2, j), up(arr, i - 2, j), bottom(arr, i - 2, j), number);
}
}