Need help for this recursion function.

I want to find area of contiguous 1 in two dimension array like this

00000000000000000

00000011111100000

00000011011000000

00000000001110000

00000000000000000

Contiguous area of number 1 = 13

I write FindAreaof1 function below and m_tempData(x,y) is two dimension area

I call FindAreaof1 function by this loop

for (y=0; y< width; y++){

for (x=0; x< width; x++){

if (m_tempData(x,y) == 1){

InterestArea = FindAreaof1(x,y);

If (InterestArea > 5000)

{

Interestx = x;

Interesty = y;

}

}

}

////This is FindAreaof1 function//////

long FindAreaof1(long x, long y)

{

long count ;

if (m_tempData(x,y)==0) return 0;

m_tempData(x,y) = 0;

count = 1 + FindAreaof1(x, y-1) + FindAreaof1 (x+1, y-1)

+ FindAreaof1 (x+1, y) + FindAreaof1 (x+1, y+1)

+ FindAreaof1 (x, y+1) + FindAreaof1 (x-1, y+1)

+ FindAreaof1 (x-1, y) + FindAreaof1 (x-1, y-1);

return count;

}

In the above example I can find FindAreaof1 = 13

If FindAreaof1 has small value ,it can find FindAreaof1.

But if FindAreaof1 has large value , it show message box and tell me there is Stack Overflow error.

I think this error cause by time of resursion is large. I want to know how to exit loop FindAreaof1 when count more than 5000 and send 5000 to FindAreaof1(x,y)

Because I think if exit loop when count >= 5000 can solve Stack Overfolw error and I want only position x and y which has Findareaof1 more than 5000.