你这个最好不用递归,用循环就可以了。 比如,类这样定义 class Department { string name; Department parentDepartment; } 在判断的地方: Department tDepart=你的Department; while(null!=tDepart) { tDepart=tDepart,parentDepartment; } // 到此,就找到了最高层的了==================================== 还可以采用栈的方式,直接找栈顶就可以了。建议学学算法语言、数据结构、软件工程等,不一定要都懂,但要有个概念。软件不仅仅是编码这么简单,啰嗦甚多,仅供参考。
我试了,还是不行。程序一执行到最后的括弧,就返回返回去执行if块中的
SearchForTopParentDepartment(departmentName.ParentDepartment, abc);也返回值,但是不是我要的值。return abc;的值是我要的。
实在是不知道怎么做,我一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 }
比如,类这样定义
class Department
{
string name;
Department parentDepartment;
}
在判断的地方:
Department tDepart=你的Department;
while(null!=tDepart)
{
tDepart=tDepart,parentDepartment;
}
// 到此,就找到了最高层的了====================================
还可以采用栈的方式,直接找栈顶就可以了。建议学学算法语言、数据结构、软件工程等,不一定要都懂,但要有个概念。软件不仅仅是编码这么简单,啰嗦甚多,仅供参考。
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;
}
}