public void GetDepartment(string strUserName, ref System.Text.StringBuilder SB)
    {
        AdministratorSQL AS = new AdministratorSQL();
        DataTable newDT = AS.SelectAllFromManageDepartment(strUserName);
        for (int i = 0; i < newDT.Rows.Count; i++)
        {
            SB.Append("'" + newDT.Rows[i]["ManageDepartment"].ToString().Trim() + "',");
            GetDepartment(newDT.Rows[i]["UserName"].ToString().Trim(), ref SB);
        }
    }现在一运行就死,各位帮看下哪里错了呢?
下面这样也是死的!public void GetDepartment(string strUserName, ref System.Text.StringBuilder SB)
    {
        ArrayList AL = new ArrayList();
        AdministratorSQL AS = new AdministratorSQL();
        DataTable newDT = AS.SelectAllFromManageDepartment(strUserName);
        for (int i = 0; i < newDT.Rows.Count; i++)
        {
            SB.Append("'" + newDT.Rows[i]["ManageDepartment"].ToString().Trim() + "',");
            AL.Add(newDT.Rows[i]["UserName"]);
        }
        newDT = null;
        for (int i = 0; i < AL.Count; i++)
        {
            GetDepartment(AL[i].ToString(), ref SB);
        }
    }

解决方案 »

  1.   

    死循环   递归不应该在for循环里    i应当做为递归的参数public void GetDepartment(string strUserName, ref System.Text.StringBuilder SB,int i)
      {
      AdministratorSQL AS = new AdministratorSQL();
      DataTable newDT = AS.SelectAllFromManageDepartment(strUserName);
      i++;
      if(i < newDT.Rows.Count)
      {
          SB.Append("'" + newDT.Rows[i]["ManageDepartment"].ToString().Trim() + "',");
          GetDepartment(newDT.Rows[i]["UserName"].ToString().Trim(), ref SB,i);
      } 
      }这样就应该没问题了
      

  2.   

    这个罗辑不对吧..在For里那得弄到什么时候是头..这样程序肯定死了.
      

  3.   

    do(i)
    {
    if(i==0)
    return 1;
    else
    do(--i);
    }