您的位置:PHPChina 开源社区门户 >> 论坛 >> PHP高级应用(应用讨论) >> 查看帖子
字体: 小 中 大
七月十五 发表于: 2008-9-11 16:44 来源: PHPChina 开源社区门户
QUOTE:
原帖由 生命如蓝 于 2008-9-11 16:47 发表 那就用静态变量呗。
原帖由 mrhhsg 于 2008-9-11 16:48 发表 这个函数有问题在else里面没有return
最新回复
QUOTE:
你用static试试看QUOTE:
哦?愿闻其详,请用代码解答。
if(!isset($i)) { $i = 0; }
if($n <= 0) {
return $i; //如何返回正确的执行次数
} else {
$n -= mt_rand(0, 10);
$i = $i + times($n);
return $i;
}
}
下面是调用次数的:
记下了。谢。
看下如下程序
返回值为
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 fuck40NULL
可以看得出,在return之前,$i是有值的,但是return $i的时候$i就为NULL了,这是怎么回事呢?
[ 本帖最后由 blankyao 于 2008-9-11 17:34 编辑 ]
函数直接就跳到else里面去了,当然没有返回
其他的返回是在递归里面的返回
echo "fuck" . $i;之后 的return $i;是有执行的
但是在递归调用是深一次执行的, 而你后面的var_dump的是最外面一层调用, 除了最深一层会运行if代码段中的程序, 其它的都是调用else中的.
你可以在else中加个return $i; 像这样:
高级区就是不一样
谢谢。
单纯用echo来做的递归不太实用
带return才更能用在程序里,特别是MVC模式下
谢谢