在以下代碼中,變量levelsToGo
在遞歸調用getAllStringNames()
時意外更新。當它回到棧來彈出時,我得到了傳遞給遞歸調用的levelsToGo的值,而不是先前存在的值。遞歸函數參數值根據向下遞歸值獲得更改
public List<String> getAllStringNames(Student p, Integer levelsToGo)
{
List<String> employeeSet = new ArrayList<String>();
for(Student child : p.getAllSubjects())
{
employeeSet.add(child.getRoll());
if(levelsToGo > 0)
studentChilds.addAll(getAllStringNames(child, --levelsToGo))
}
return employeeSet;
}
我第一次通過student1,levelsToGo
爲1和student1有1名兒童。它遞歸調用和設置levelsToGo
爲0;如果回來的第一次迭代,我們發現,價值仍然爲0。它應該是原始值1.
樣本輸入和預期的輸出? –
您是否期待內部遞歸調用中'levelsToGo'的更改會反映在外部遞歸調用中? –
這是我做過的非常愚蠢的事情:P –