<?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
<?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
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();
?>
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答610 阅读✓ 已解决
打印的是 8 和 5 ,而不是 85。
第一次调用时, c = 2 + 3 < 6 是成立的,这时候传了 3 和 (2 + 3) ,然后进去的时候 c < 3 + 5 就不成立了,所以打印了 他的结果也就是 8,递归结束,返回根,然后打印了最初执行的 c = 3 + 2。
执行顺序