生成长度为n的所有二进制字符串

时间:2011-10-10 10:41:06

标签: php

<?php
    $n = 3;
    $x = array();
    function Try1($i){
        foreach(array(0,1) as $j){
            $x[$i] = $j;
            if($i==$n-1){
                print_r($x);
            }else{
                Try1($i+1);
            }
        }
    }

    Try1(0);
?>

我上面写了一段代码,但是当我运行时遇到错误:致命错误:第5行的BinaryStrings.php中允许的内存大小为134217728字节(试图分配24个字节)。

我在python中写了一个类似的版本,它有用,你能帮助我吗?谢谢^^。

1 个答案:

答案 0 :(得分:2)

变量$x$n与其余代码的范围不同。它们在函数外部定义而不是传递给它,因此它们不存在于函数内部。函数内部$n-1因此等于-1,您的代码将进入无限循环。这就是为什么你a)打开错误报告和b)使用<>而不是==的条件。