你不再  调试时  运行 还会return吗??

解决方案 »

  1.   

    在你的方法体力声明一个 string 变量,return  出你这个变量。
      

  2.   


    我试了,还是不行。程序一执行到最后的括弧,就返回返回去执行if块中的
    SearchForTopParentDepartment(departmentName.ParentDepartment, abc);也返回值,但是不是我要的值。return abc;的值是我要的。
      

  3.   

    return之后当然还要继续执行递归啊!你最里面一层的方法return了,不就回到调用它的上一层了,然后再一层一层这样递归回去直到最开始调用的方法return才结束递归啊。楼主你最好单步追踪一个层次不太深的递归,好好把递归的执行顺序学习一下,你这里的理解明显有问题啊
      

  4.   

    那么请问,在return后,如何中断这个递归函数啊?
      

  5.   


    实在是不知道怎么做,我一return,就调用递归函数。
    哪位能写一下我的需求,我学习一下。
    我的需求是找到一个部门的最高级的部门。比如,a的上级是b,b的上级是c.c没有上级了。下面的函数是我写的,有错误。函数的第一个参数是部门的名字,比如是部门a, 第二个参数abc是函数要返回的值,在我的例子中也就是部门a的最高级的部门,部门c。再比如函数的第一个参数如果是部门c,那么就执行if块内的代码,由于c没有上级部门,就直接返回c的名字。
    请问诸位应该怎么写?请教了。
     private String SearchForTopParentDepartment(Department departmentName, String abc)
            {
                // string i = null;
                if (departmentName.ParentDepartment == null)
                {
                   return departmentName.DepartmentName ;
                }
               else
               {
                   abc = departmentName.ParentDepartment.DepartmentName;               SearchForTopParentDepartment(departmentName.ParentDepartment, abc);
                  
                   // if           }
      

  6.   

    你这个最好不用递归,用循环就可以了。
    比如,类这样定义
    class Department
    {
        string name;
        Department parentDepartment;
    }
    在判断的地方:
    Department tDepart=你的Department;
    while(null!=tDepart)
    {
        tDepart=tDepart,parentDepartment;
    }
    // 到此,就找到了最高层的了====================================
    还可以采用栈的方式,直接找栈顶就可以了。建议学学算法语言、数据结构、软件工程等,不一定要都懂,但要有个概念。软件不仅仅是编码这么简单,啰嗦甚多,仅供参考。
      

  7.   

    关于LZ 的代码,有以下几点要说的,觉得对的可以参考,不对的略过就可以了
    1. 代码中无论什么情况下 abc 都会被重新赋值,其实是一个临时变量的用法,没必要作为参数传入
    2. SearchForTopParentDepartment 是返回最高部门,那么 Line 10 中调用函数返回的结果到哪里去了呢?
    3. String, string 最好统一一下吧private string SearchForTopParentDepartment(Department departmentName)
    {
        if (departmentName.ParentDepartment != null)
        {
            return SearchForTopParentDepartment(departmentName.ParentDepartment);
        }
        else
        {
            return departmentName.DepartmentName;
        }
    }