A 2 dimensional array with a size of NxN, composed of 1 and 0.
A neighbor is a 1 in the north / south / west / east of the index
Recursively find how many neighbors an index in the array has (neighbors that touch other neighbors are also included).
For the array I built I should get 6, but instead I get a stack overflow exception, and I don't get why.
Below is my 7x7 array, that for index 2, 5 should return the value of 6.
Example:
static void Main(string[] args)
{
    int[,] arr = { 
       { 0,0,0,1,0,0,0 },
       { 1,0,0,1,1,0,0 },
       { 0,0,0,0,1,1,0 },
       { 0,0,0,0,1,0,0 },
       { 0,0,0,0,0,0,0 },
       { 0,1,1,1,1,0,0 },
       { 1,0,0,1,0,0,0 }, 
    };
    Console.WriteLine(Recursive(arr,2,5));
    Console.ReadLine();
}
Routine under test:
static public int Recursive(int[,] arr, int x, int y) 
{   
    if (x < 0 || y < 0 || x > arr.GetLength(0) || y > arr.GetLength(1))
    {
        return 0;
    }
    
    // check if a 1 has neighbors
    if (arr[x, y] == 1)
    {
        return 1 + 
               Recursive(arr, x - 1, y) +
               Recursive(arr, x + 1, y) + 
               Recursive(arr, x, y - 1) +
               Recursive(arr, x, y + 1);
    }
    else
    {
        return 0;
    }                   
}
 
     
    