擅长:python、mysql、java
<p>您的算法是找到所有的<code>m</code>-元组(<code>m</code>是伪代码中<code>j</code>的<code>max</code>下标),这些非负整数加起来等于或小于<code>n</code>。在Python中,最自然的表达方式是使用递归生成器:</p>
<pre><code>def gen_tuples(m, n):
if m == 0:
yield ()
else:
for x in range(n, -1, -1):
for sub_result in gen_tuples(m-1, n-x):
yield (x,)+sub_result
</code></pre>
<p>输出示例:</p>
^{pr2}$