我写了一个函数,它将输出一系列格雷码。对于 N 的输入,显示 N 位的最后 N 个格雷码数。
现在,如果输入超出,此函数不会给出正确的输出31
。但我至少需要这个工作64
。我怎样才能做到这一点?
这是功能:
function gray_encode($binary) {
$powered = pow(2, $binary) - 1;
for ( $i = ($powered - $binary)+1; $i < ($powered+1); $i++) {
echo decbin($i ^ ($i >> 1)) . PHP_EOL;
}
}
gray_encode(31);
31 的正确输出:http: //codepad.org/8LotGD35
33 的错误输出:http: //codepad.org/JmfIOrrj
1-31 的完整输出:http: //codepad.viper-7.com/aDPx68