static变量打印正确的值但返回null

时间:2016-02-23 20:07:40

标签: php recursion static

我有奇怪的情况。看看这个。我不知道乳清$ counter变量打印6但不返回6。

function myTest($bin) {    
    static $counter = 0;
    if ($bin == 0) {        
       // echo $counter; // prints 6
       return $counter; 
    }    

    $rem = $bin % 2;

    if($rem == 0) {        
      $counter++;
      $bin = $bin / 2;         
      myTest($bin);          
    } else {        
       $counter++;
       $bin = $bin - 1;        
      myTest($bin);
   }    
}

$test = mytest(11);

var_dump($test); // return NULL  

1 个答案:

答案 0 :(得分:1)

编写递归函数时,必须"返回"递归调用,如

return myTest($bin);

如果没有返回递归调用,对函数的原始调用不会返回任何内容。所以,$ test为null(没有返回)。