【发布时间】:2019-06-09 05:20:53
【问题描述】:
我正在使用 php bcmath 扩展进行阶乘计算,我发现 echo 和 return 导致不同的结果
此代码生成错误结果
<?php
$a = 25;
function test($a){
if($a>1){
$sum = bcmul($a, test($a-1)) ;
echo $sum;
}
if($a == 1) { return $a ;}
}
test($a); // Output 200000000000000000000000
?>
下面的代码生成正确的结果
<?php
$a = 25;
function test($a){
if($a>1){
$sum = bcmul($a, test($a-1)) ;
return $sum;
}
if($a == 1) { return $a ;}
}
echo test($a);
?>
这个问题生成200000000000000000000000 结果与echo $sum 并返回错误结果,但如果我echo test() 和return $sum 则倾向于正确结果15511210043330985984000000。为什么
【问题讨论】:
-
return结束函数,echo没有? -
其实这不是echo和return的区别,只是因为你在函数中使用了递归,所以你必须返回中间结果
标签: php int return echo bcmath