【发布时间】:2017-05-21 22:11:39
【问题描述】:
我想知道您是否可以递归地编写这样的东西或使用不同的循环系统:
std::string a = "00000000";
for (int i = 0; i<8; i++) {
a[i] = '1';
for (int j = 0; j<8; j++) {
if (i!=j) {
a[j] = '1';
... //more for loops with the same structure
std::cout<<a[j]<<"\n";
a[j] = '0';
}
a[i] = '0';
}
我正在尝试在不使用任何库的情况下打印出所有可能的 0 和 1 八位组合(如果必须的话,除了 bitset)。如果我这样做,我最终会得到 8 个 for 循环,这有点多。我想知道是否有一种方法可以使用递归或使用标准 do/while/for 循环的巧妙技巧来压缩它。
【问题讨论】:
-
我看不出该代码应该做什么,但 recursion 几乎总是一个坏主意。
-
尾递归理论上和迭代一样高效,但 gcc 并没有对其进行优化。 Clang 可以。
标签: c++ recursion combinations