问一个PHP函数自身调用的问题

<?php
function sd($a=3,$b=2){
   $c = $a + $b;
   if($c < 6){
        sd($a,$c); 
   }
   echo $c;
}
sd();
?>

结果是:85

分析了下之后,发现结果应该是8
为何是85?因为c被赋值了两次,分别是8和5;
为何两次赋值,变量C没有被8覆盖?相反输出了两次,我现在只想得到正确的结果8

阅读 2.3k
3 个回答

打印的是 8 和 5 ,而不是 85。

第一次调用时, c = 2 + 3 < 6 是成立的,这时候传了 3 和 (2 + 3) ,然后进去的时候 c < 3 + 5 就不成立了,所以打印了 他的结果也就是 8,递归结束,返回根,然后打印了最初执行的 c = 3 + 2。

执行顺序

Snipaste_2022-06-06_11-00-07.png

function sd($a=3,$b=2){
   $c = $a + $b;
   if($c < 6){
        sd($a,$c); 
   }else{
       echo $c;
   }
}
sd();

建议基础再打牢点,熟悉一下参数作用域

你的程序有问题,echo 需要放在 else 中,不然每次都会执行

<?php
function sd($a=3,$b=2){
   $c = $a + $b;
   if($c < 6){
        sd($a,$c);
   } else {
           echo $c;
   }
}
sd();
?>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题