一个递归的问题想不通

来源:百度知道 编辑:UC知道 时间:2024/05/26 06:19:39
<?php
$n = 235768;
function F($n){
if ($n >= 10){
F(floor($n/10));
}
return $n%10;
}
echo F($n);
?>

为什么会输出是 8

我觉得很怪,应该越来越小,可是当参数小于10后,这个$n又回到了原来定义的那个数值.
如查我在return $n%10; 前面加一句

echo $n;
echo '</br>';

则显示出来的结果会是这样:
2
23
235
2357
23576
235768
8

这觉得很奇怪,是哪个一步会使这个数据从/ 10,再变到*10

你觉得$n会“越来越小”? 某种角度来说是这样的, 准确的说应该是 递归层数越深的调用中,参数$n越小。 但是如果你是在 F($n/10)和 return 之间加入echo $n; ,这句就是按退栈顺序运行的, 所以打印出来的结果当然就是越来越大的。

最后结果的8就是函数最后 return $n%10的结果啊