algorithm - 递归生成所有长度为 n 的二进制字符串的最佳方法是什么?

标签 algorithm recursion language-agnostic binary

我正在寻找一种好的(易于实现、直观等)递归方法来生成长度为 n 的所有二进制字符串。 , 其中1 <= n <= 35 .

我很欣赏有关伪代码算法的想法(没有特定于语言的技巧)。

LE:好吧,我的上限确实过高了。我的意图是避免使用 1 中计数器的二进制表示的解决方案。至 1 << n .

最佳答案

这是 C++ 中的递归示例。

vector<string> answer;

void getStrings( string s, int digitsLeft )
{
   if( digitsLeft == 0 ) // the length of string is n
      answer.push_back( s );
   else
   {
      getStrings( s + "0", digitsLeft - 1 );
      getStrings( s + "1", digitsLeft - 1 );
   }
}

getStrings( "", n ); // initial call

关于algorithm - 递归生成所有长度为 n 的二进制字符串的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14876564/

相关文章:

java - 通过打印所有可能的方式递归硬币找零

algorithm - 证明在循环 even n = n/2 and odd n = n + 1 之后任何 n 等于 1

c - 两个连续质数之间的最大差值

javascript - 为什么当我调用 .length 时这个数组未定义?

c++ - 递归方法不断崩溃(更改算法)

language-agnostic - 将图形数据表示为键值对象

winapi - 将 `Ex`添加到函数/方法名称是什么意思?

java - 这是一种新的排序算法吗? [使用 Java 和伪代码实现]

compiler-construction - 在设计编译器时,处理递归是否需要特殊处理?

arrays - 给定一个有序数组,其中有几个数字是颠倒的。如何排序?