690. 员工的重要性
//1.根据传入的id找对应的员工
public static Employee findEmployeeById(List<Employee> employees,int id){
for(int i=0;i<employees.size();i++){
if(id==employees.get(i).id)
return employees.get(i);
}
return null;
}
//2.开始编写
public static void getImportance(List<Employee> employees, int id) {
Employee employee=findEmployeeById(employees,id); //找到初始id
res+=employee.importance;
for(int i=0;i<employee.subordinates.size();i++){
int tempid=employee.subordinates.get(i);
getImportance(employees,tempid);
}
}
错误解法:
public void getImportance(List<Employee> employees, int id,int res) {
Employee employee=findEmployeeById(employees,id); //找到初始id
res+=employee.importance;
for(int i=0;i<employee.subordinates.size();i++){
int tempid=employee.subordinates.get(i);
getImportance(employees,tempid,res);
}
}
将res作为参数传入,错误,res相当于形参,所有的改变不会影响外面的值
这里说明一下这种写法,需要设置一个全局变量res=0才可以。不可以将res作为函数参数传进去,传进去之后所有的对于res的操作都在内部操作,对于外面的res不会有任何修改。