たとえば、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 構文を提供できる人はいますか?