尽可能生成所有二进制组合

时间:2012-12-25 11:25:29

标签: php recursion

我想指定一些位,然后在PHP中获取一个包含这些位的每个可能组合的数组。

示例:

number: 3
000
001
010
011
etc...

我尝试过最初为字符串设计的递归算法,因此算法太慢了。

最有效的方法是什么?

1 个答案:

答案 0 :(得分:6)

关于位的好处是你可以用它们做很简单的事情。如果你想要3位,你将有7个数字,恰好是8-1。如果你想要4位,你将有15个数字,恰好是16-1。使用这个好的事实可以使您的代码变得简单。

$bits = 4;
$max = (1 << $bits);

for ($i = 0; i < $max; $i++) {
    // Use $i
    // echo str_pad(decbin($i), $bits, '0', STR_PAD_LEFT);
}