发现PHP一个递归的问题~觉得应是BUG
<?function abc($s="1")
{
if($s!="11111111")
{
abc($s."1");
}
else
{
// echo $s; 《=只有这样才显示 $s 的值
return $s;
}
}
$s=abc();
echo "显示:".$s; // 〈= 这里并不显示$s 的值
?>
/* 按照道理应该显示出的$s结果是
-------------------------------------------
显示:11111111
-------------------------------------------
但实际上字符串根本不显示,就是说,return $s 根本没有用,显示的是
-------------------------------------------
显示:
-------------------------------------------
只有当我们直接在function里 echo $s; 时 ,才可以显示出$s的值,但还是无法返回正确 字符串,大家试试,HOHO。
有谁知道为什么?告诉我
*/
回复:发现PHP一个递归的问题~觉得应是BUG
你的递归调用的时候没有接收的表达式呀。改成这样如何?<?
function abc(&$s)
{
if($s!="11111111")
{
$s=$s."1";
abc($s);
}
else
{
echo $s; //《=只有这样才显示 $s 的值
//return $s;
}
}
$s=1;
abc($s);
echo "显示:".$s; // 〈= 这里并不显示$s 的值
?>
回复:发现PHP一个递归的问题~觉得应是BUG
晕~以前学C的没要用过~HOHO,就……,我试是试回复:发现PHP一个递归的问题~觉得应是BUG
不对啊~刚才仔细看了一下,你这个不是return了,是传值调用了!!!跟 return 不同啊!
回复:发现PHP一个递归的问题~觉得应是BUG
我也遇到过类似的问题,就是不太搞得懂return回复:发现PHP一个递归的问题~觉得应是BUG
想问一下,为什么要在变量前加"&"是不是这样啊:
$a=$b
改动$b时,$a也跟着变了
而这样:
$a=&$b
改动$b,$a不变啊?
是不是用"$a=$b"时,两个变量放在同一个内存地址?
回复:发现PHP一个递归的问题~觉得应是BUG
$a = $b;//这是传值赋值,语句执行后$a与$b两个变量的值相等,但互不影响。//任何一个改变不会影响到另一个。
$a=&$b;//这是传址赋值,$a指向$b的地址。
//两个变量指向相同的内存空间,其中一个改变,另一个必然改变。
我记得是这样的,可能是你记反了。
回复:发现PHP一个递归的问题~觉得应是BUG
的确有问题呀,$s=11111111的时候还是在递归的最里面一层,你用return只是把11111111返回给了最里面一层abc,所以最外面的一层abc当然不能取到返回值了你说对吗?呵呵
回复:发现PHP一个递归的问题~觉得应是BUG
寒一个~php是基于C的,C的递归做过不少了~没有这个问题回复: 回复:发现PHP一个递归的问题~觉得应是BUG
[QUOTE][i]最初由 fluke 发表[/i][b]想问一下,为什么要在变量前加"&"
是不是这样啊:
$a=$b
改动$b时,$a也跟着变了
而这样:
$a=&$b
改动$b,$a不变啊?
是不是用"$a=$b"时,两个变量放在同一个内存地址? [/b][/QUOTE]
&是采用传递地址的方式
回复:发现PHP一个递归的问题~觉得应是BUG
哦,怪不得,原来是我记反了(以前在书店只看了一分钟,呵呵)
回复:发现PHP一个递归的问题~觉得应是BUG
<?phpfunction digui($i){
if($i>1){
$sum=$i * digui($i-1);
}
else{
$sum = 1;
}
return $sum;
}
echo digui(6);
?>
输出结果:720
这个也许应该可以帮助你们。
页:
[1]