Come Select[Tuples[Range[0, n], d], Total[#] == n &]
, ma più veloce?enumerazione di tutte le partizioni in Mathematica
Aggiornamento
Ecco le 3 soluzioni e la trama dei loro tempi, IntegerPartitions seguiti da permutazioni sembra essere più veloce. Temporizzazione a 1, 7, 0,03 soluzioni ricorsive, FrobeniusSolve e IntegerPartition rispettivamente
partition[n_, 1] := {{n}}; partition[n_, d_] := Flatten[Table[ Map[Join[{k}, #] &, partition[n - k, d - 1]], {k, 0, n}], 1]; f[n_, d_, 1] := partition[n, d]; f[n_, d_, 2] := FrobeniusSolve[Array[1 &, d], n]; f[n_, d_, 3] := Flatten[Permutations /@ IntegerPartitions[n, {d}, Range[0, n]], 1]; times = Table[First[Log[Timing[f[n, 8, i]]]], {i, 1, 3}, {n, 3, 8}]; Needs["PlotLegends`"]; ListLinePlot[times, PlotRange -> All, PlotLegend -> {"Recursive", "Frobenius", "IntegerPartitions"}] Exp /@ times[[All, 6]]