
请各位大侠们帮我解一下下面这个php程序
<?functionf($a){if($a>1){$sum=pow(2,($a-1))+f($a-1);}else{$sum=1;}return$sum;}$b=f(30...
<?
function f($a){
if($a>1){
$sum=pow(2,($a-1))+f($a-1);
}else{
$sum=1;
}
return $sum;
}
$b=f(30);
echo $b;
?>
这个程序中else里面的$sum=1;这句一直令我非常的费解;改成这样$sum=$sum+1;会提示错误。汗啊!求帮忙啊! 展开
function f($a){
if($a>1){
$sum=pow(2,($a-1))+f($a-1);
}else{
$sum=1;
}
return $sum;
}
$b=f(30);
echo $b;
?>
这个程序中else里面的$sum=1;这句一直令我非常的费解;改成这样$sum=$sum+1;会提示错误。汗啊!求帮忙啊! 展开
5个回答
展开全部
我先说一下$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;
?>
追问
还是有点不懂,就是当if条件满足时,$sum的值,怎么把else中的$sum=1的值给加上了,而且最后返回的值刚好是if中和else中滴和。呵呵,技术有点菜,刚开始学,希望再指导指导哈!
追答
你思路清晰点,代码就是这样,只能你自己用逻辑思维想,这个我真没法帮你
展开全部
这个是递归算法
$sum = $sum + 1;提示错误是因为 $sum 没有初始化
$sum = $sum + 1;提示错误是因为 $sum 没有初始化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
任何数的0次幂都为1,sum=1的情况就是a<=0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有错啊。。如果真的错了,建议你把错误信息贴出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确定会报错???????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询