例如,输入 3 将返回 [1,1,1]、[2,1] 和 [1,2]
我知道很多组合/排列问题都涉及在循环内调用自身的递归函数,但我看不到将其应用于此问题的适当方法。
这是我试图掌握的一个概念,这就是我到目前为止所拥有的......
function numberToAddends($number, $arr, $k){
for ($i = 0; $i < $number; $i++) {
$arr[$k] = $i;
numberToAddends($k-$i, $arr, $k + 1);
}
if($k <=0){
print_r($arr);
}
}
对于测试输入,您可以使用类似 numberToAddends(3, $arr, 0);
我在思考正确的道路吗?任何人都可以提供完整的 php 语法和注释代码来解决这个问题吗?