速度を上げるために、この 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 がインストールされていないシステムで作業していますが、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]