为了提高速度,我需要转换这段 python 代码。r 和 n 是用户定义的整数变量。
该函数应该生成具有以下标准的所有列表:
listSum = n,长度 = r,值(带替换)在 [0,1,2,...,n]
def recurse(r,n):
if r == 1:
yield [n]
return
for i in range(n+1):
for j in recurse(r-1,n-i):
yield [i]+j
我尝试使用静态变量,但它们在不正确的时间递增。我试图从主函数更改我需要的变量(r、n 和 i)并将它们传递给我的生成器等效函数,但这个解决方案似乎不适用于 r 和 n 的不同初始值。我正在使用未安装 Boost 的系统,并且我没有安装它的系统权限。那么如何将递归 python 列表生成器转换为 C++?
当我迭代recurse(r=3, n=4)
时,我得到:
[0, 0, 4]
[0, 1, 3]
[0, 2, 2]
[0, 3, 1]
[0, 4, 0]
[1, 0, 3]
[1, 1, 2]
[1, 2, 1]
[1, 3, 0]
[2, 0, 2]
[2, 1, 1]
[2, 2, 0]
[3, 0, 1]
[3, 1, 0]
[4, 0, 0]