求递归算法解决办法

求递归算法
求递归算法解决办法
一块内存,如:
BYTE* pWalk = new BYTE[cx * cy];
cx,cy为地图的宽和高,那么这个内存的一个BYTE对应地图的一个x,y,在某个x,y处,我用上图的顺序进行搜索,如果发现某点的值为nWalk,则函数返回找到的位置n = y * cx + x,否则返回-1,不管函数返回何值,输入参数x,y都要变化到相应位置.我用得的笨方法(以两层为例,如果这个层次为m,则数组很长):

int SeekWalk(int cx, int cy, int& x, int& y, BYTE nWalk, BYTE* pWalk)
{
int n = -1;
BOOL bSeek = FALSE;
BYTE flagMove[] = {0,1,1,2,2,3,3,4,4,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,0};
for (int i = 0; i < sizeof(flagMove); i ++)
{
switch (flagMove[i])
{
case 0:
x --; y --; break;
case 1:
x ++; break;
case 2:
y ++; break;
case 3:
x --; break;
case 4:
y --; break;
}
n = y * cx + x;
if (nWalk == pWalk[n]) {bSeek = TRUE; break;}
}
return bSeek ? n : -1;
}

如果不用数组的笨方法,用递归算法,是不是效率更高?
------解决方案--------------------
递归算法只能使程序看起来简洁,但由于函数调用中stack操作,效率会更低。 
------解决方案--------------------
我当然知道汇编后的结果是一样的。但在vc上,至少代码简洁多了,还少了switch判断。