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

mo5*_*470 2 language-agnostic algorithm binary recursion

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

我很感激伪代码算法的想法(没有语言特定的技巧).

LE:好吧,我确实超出了上限.我的目的是避免使用计数器的二进制表示的解决方案11 << n.

Gri*_*yan 7

这是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
Run Code Online (Sandbox Code Playgroud)