我搜索并发现了类似的问题,但它们似乎都不适合我的。基本上,我需要编写一个递归函数,将循环嵌套 N 次,并仅在最后一个循环上打印所有内容。如果你能找到另一个解决问题的方法,那就太好了。
0 = *
1 = +
2 = ABC
3 = DEF
...
8 = STU
9 = VWXYZ
这是完整的代码: http: //pastebin.com/2YdQ693N
这是一个硬编码的 N=3 示例:
//sout is a vector<string>
for(int i = 0; i < sout[0].size(); i++)
{
for(int j = 0; j < sout[1].size(); j++)
{
for(int k = 0; k < sout[2].size(); k++)
{
cout << sout[0][i] << sout[1][j] << sout[2][k] << endl;
}
}
}
此特定示例的以下输出(输入为“123”):
+AD
+AE
+AF
+BD
+BE
+BF
+CD
+CE
+CF
我来这里之前最接近的是一个类似于这里的递归函数:http: //v2.cplusplus.com/forum/beginner/68434/但我无法让它适用于我的情况。
我需要索引按这种顺序排列:
000
001
002
010
011
012
020
021
022
除了长度必须是可变的(因此高度也是可变的)。
这是我到目前为止一直在尝试的递归函数:
void recurseLoop(const vector<string>& sout, int numLoops)
{
if(numLoops > 0)
{
for(int i = 0; i < sout[1].size(); i++)
{
//cout << i;
recurseLoop(sout, numLoops - 1);
}
}
else
{
//cout << endl;
return;
}
}
然而,'i' 给出的结果非常难以理解,我无法获得正确的循环/if 语句结构以使其正常工作。任何帮助表示赞赏!