我正在尝试将此代码转换为递归方法
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 万。我该如何纠正?
最佳答案
void backtrack(int start, int depth) {
if (depth < 5) {
for (int i = start; i < 25; ++i) {
backtrack(i + 1, depth + 1);
}
}
}
看起来它会和你的嵌套循环做同样的事情。
关于c++ - 求组合的几个循环代码如何转化为递归的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18415902/