次の再帰ルーチンを使用して、2つのセットのクロス積を計算しました。再帰を使用したセットのクロス積
def combine(input1,input2,output):
if len(input2)==0:
return output
else:
for num in input1:
output.append((num,input2[0]))
combine(input1,input2[1:],output)
input1=[1 2 5]
input2=[2 3]
output=[(1,2), (1,3), (2,2),(2,3),(5,2),(5,3)]
たとえば、ループ内のループを削除して同じ機能を実行するなど、再帰を改善することは可能ですか?私は問題を解決するさまざまな方法を検討しています。
編集:何か内蔵のソリューションを探していません。どのように再帰を行うかを探して、itertools.productを使用しないでください。
あなたは 'itertools.product'について知っていますか? –
@LevLevitsky私の悪い、質問を編集しました – gizgok
あなたの最終的な 'combine'呼び出しは、その前に' return'が必要だと思います。 – DSM