php - 生成所有可能的二进制组合

标签 php recursion

我想在 PHP 中指定一些位,然后得到一个包含这些位的所有可能组合的数组。

例子:

number: 3
000
001
010
011
etc...

我试过递归算法,本来是为字符串设计的,所以算法太慢了。

最有效的方法是什么?

最佳答案

关于位的好处是你可以用它们做非常简单的事情。如果你想要 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);
}

关于php - 生成所有可能的二进制组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030192/

相关文章:

php - 使用 Php & JQuery 获取 MySQL 记录

c++ - 随机递归AVL树高误差

java - 如何使用反射递归序列化对象?

php - MySQL 最佳实践 : SELECT children recursive as performant as possible?

recursion - 在 F# 中使用不可变记录的状态机

PHP 检查数组中的多个值是否全部为正数、全部为负数或部分为负数

php - 打印出登录用户数据匹配登录SESSION

php - 使用 Symfony 将哪个 MongoDB 库用于独立的 PHP 项目?

python - 如何在不改变递归限制的情况下递归地将数字1000000次加1?

php - 模拟 Laravel Controller 依赖