Php 在获取递归值之前打印输出

Php 在获取递归值之前打印输出,php,recursion,echo,Php,Recursion,Echo,下面的输出是1102555。怎么可能呢?递归是先发生还是先回音 abc(11); function abc($a){ if(intval($a/2) != 0){ echo abc(intval($a/2)) + 10 * ($a/2); }else{ echo 1; } } 在这种情况下,递归是第一个。表达式从最里面到最外面求值。所以在这种情况下是这样的: $a/2 in

下面的输出是
1102555
。怎么可能呢?递归是先发生还是先回音

abc(11);
function abc($a){       
    if(intval($a/2) != 0){      
         echo  abc(intval($a/2)) + 10 *  ($a/2);        
    }else{
        echo 1;         
    }
}

在这种情况下,递归是第一个。表达式从最里面到最外面求值。所以在这种情况下是这样的:

  • $a/2
  • intval(此处为上一个的结果)
  • abc(此处为上一个的结果)
  • $a/2
  • 10*(此处为上一次的结果)
  • 此处回显上一个\u的结果\u

  • 在您的例子中,递归将首先发生,因为每次调用$a/2大于0的函数abc时,都会一次又一次地调用回显中的abc(),直到$a/2的值小于0为止