3

このコードを再帰メソッドに変換しようとしています

for(int i=0;i<25;++i)
  for(int j=i+1;j<25;++j)
    for(int k=j+1;k<25;++k)
      for(int l=k+1;l<25;++l)
        for(int m=l+1;m<25;++m)
       {//}

この方法は、25c5 の組み合わせを見つけることです。再帰的な方法で私はこれを書いた

int soln[5];
void backtrack(int c)
{
if(c<5)
{
    for(int i=c;i<25;++i)
    {
        soln[c] = i;
        backtrack(c+1);

    }
}
else
{ // }

私の解決策は明らかに間違っています。再帰の数は 600 万回ですが、実際には 5 万回になるはずです。どうすればそれを修正できますか?

4

2 に答える 2

1

パフォーマンスを比較すると、再帰的な方法よりもネストされたループの方が優れていると思います。再帰的にメソッドを呼び出す必要があり、これには時間がかかります。

于 2013-08-24T07:31:03.100 に答える