static void Main(string[] args)
{
Employee e5 = new Employee();
e5.salary = 1;
e5.EmployeeCollection = new Employee[1] { null };//注意这里的Employee类型空数组,不要写成e5.EmployeeCollection=null,否则算法有问题
Employee e55 = new Employee();
e55.salary = 2;
e55.EmployeeCollection = new Employee[1] { null };
Employee e4 = new Employee();
e4.salary = 2;
e4.EmployeeCollection = new Employee[2] { e5, e55 };
Employee e3 = new Employee();
e3.salary = 3;
e3.EmployeeCollection = new Employee[1] { e4 };
Employee e2 = new Employee();
e2.salary = 4;
e2.EmployeeCollection = new Employee[1] { e3 };
//Employee e10 = new Employee();
//e10.salary = 10;
//e10.EmployeeCollection = new Employee[1] { null };
Employee e1 = new Employee();
e1.salary = 5;
e1.EmployeeCollection = new Employee[1] { e2 };
Console.WriteLine("工资总和:" + Employee.Salary(e3));
Console.Read();
}
}
class Employee
{
private int _salary;
public int salary
{
get { return _salary; }
set { _salary = value; }
}
public Employee[] EmployeeCollection;
public static decimal Salary(Employee e)
{
decimal s = e.salary;
List<Employee> allPeople = new List<Employee>(e.EmployeeCollection);
for (int i = 0; i < allPeople.Count; i++)
{
if (allPeople[i] != null)
{
allPeople.AddRange(allPeople[i].EmployeeCollection);
s += allPeople[i].salary;
}
//else
//{
// return s;
//}
}
return s;
}
}