acm hdu 1181 不知道递归错哪了。一直跳不过去。哪位高手帮小弟我看看

acm hdu 1181 不知道递归哪里错了。一直跳不过去。谁帮我看看。
我不要你的解答代码。请你帮我找出错误。
谢谢了。
C/C++ code
#include <iostream>
#include <cstdio>
using namespace std;
int num=0;
char word[100][100];
int vis[100];

bool search(char ch)
{
     for(int i=0;i<=num;i++)
     {
             if(word[i][0]=='0')
             return false;
             else if(ch=='m')
             return true;
             else if(word[i][0]==ch)
             {
                  ch=word[i][strlen(word[i])-1];
                  printf("%s %c\n",word[i],word[i][strlen(word[i])-1]);
                  search(ch);
             }
     }
}

int main()
{
    memset(word,'\0',sizeof(word));
    while(scanf("%s",word[num]))
    {
     if(word[num][0]=='0')
      break;
      num++;
    }
    memset(vis,0,sizeof(vis));
    for(int i=0;i<num;i++)
    {
            char c;
            if(word[i][0]=='b')
            {
                 c=word[i][strlen(word[i])-1];
                 search(c);
            }
    }
    system("pause");
}



------解决方案--------------------
呃,费了好些力知道LZ想要做的事了...不过LZ的代码似乎还是一个调试过程中的产品吧,...
你说的递归应该是指search吧,
第一个判断“0”的条件不会满足,因为“0”是用来分割一组测试数据的
第二个判断就算满足后,也不会有任何效果...
第三个判断是你程序一直跳不出去的原因,因为你的判断条件是是否首尾相同...一旦相同你有递归判断,第三个条件还是满足,死循环...
LZ最好把整个结构改一下,不然就算跳出了循环也不一定找到解...其实,这道题DFS搜索即可。