我先说一下$sum=$sum+1在$sum没有进行初始化时的运行过程吧
①先执行$sum+1
②再$sum=上面的结果
你这段代码一开始就没有给$sum初始化,也就是说执行①的时候没有找到$sum这个变量
这段代码我建议就是变量初始化,怎么改都不如初始化方便,安全,许多编程员都是以运行为目标,能跑起来就行了,没有一点注意安全性,变量不初始化可能导致变量覆盖,修改的代码如下
function f($a){
if($a>1){
$sum=pow(2,($a-1))+f($a-1);
}else{
$sum=1;
}
return $sum;
}
$sum=0;
$b=f(30);
echo $b;
?>
这个是递归算法
$sum = $sum + 1;提示错误是因为 $sum 没有初始化
任何数的0次幂都为1,sum=1的情况就是a<=0
没有错啊。。如果真的错了,建议你把错误信息贴出来
确定会报错???????