How to change recursive loop to non recursive loop
I want to find area of contiguous 5 (5-connected area) in two dimension array like this

00000000000000000
00000055555500000
00000055055000000
00000000005550000
00000000000000000


Contiguous area of number 5 = 13
I write FindAreaof5 function below and m_tempData(x,y) is data in this array (0 or 5)
I call FindAreaof5 function by this loop

code
.................................................. .............
for (y=0; y< height; y++){
for (x=0; x< width; x++){
if (m_tempData(x,y) == 5){
InterestArea = FindAreaof5(x,y);
}
}
.................................................. .............

////Below this is FindAreaof5 function//////

code
.................................................. .............
long FindAreaof5(int x, int y)
{
long count ;
if (m_tempData(x,y)==0) return 0;
m_tempData(x,y) = 0;

count = 1 + FindAreaof5(x, y-1) + FindAreaof5(x+1, y-1)
+ FindAreaof5(x+1, y) + FindAreaof5(x+1, y+1)
+ FindAreaof5(x, y+1) +FindAreaof5(x-1, y+1)
+ FindAreaof5(x-1, y) + FindAreaof5(x-1, y-1);
return count;
.................................................. .............

In the above example I can find FindAreaof5 = 13
If FindAreaof5 has small value ,it can find FindAreaof5.
But if FindAreaof5 has large value (more than 12000) , it show message box and tell me there is Stack Overflow error.
I want to know how to solve this problem. Someone suggest me to change recursive loop to non recursive or use blob coloring but I do not know how to do that. If you know how to solve my problem, please tell me. Thank you very much.