private Number: total = 0 recurse(ArrayList<Number>: arr, Number: index, Number: candies) { // 三个参数分别代表士兵功劳的数组,当前进行到的数组第几项了,当前剩余多少个糖果没分 // 没糖果了就说明该分法正确 if(candies === 0) { total++ } // 已经到了最后一项,说明该分法不正确 if (index === arr.length) { return } // 从这个位置处不放糖果,到这个位置把剩余糖果全放了,遍历所有,回溯 for (int i = 0; i < candies; i++) { if (arr[index] 处能放下 i 个糖果) { recurse(arr, index + 1, candies - i) } } }