请各位大侠们帮我解一下下面这个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;会提示错误。汗啊!求帮忙啊!
展开
 我来答
无谓的扯淡丶
2013-09-05 · TA获得超过110个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:112万
展开全部

我先说一下$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中滴和。呵呵,技术有点菜,刚开始学,希望再指导指导哈!
追答
你思路清晰点,代码就是这样,只能你自己用逻辑思维想,这个我真没法帮你
人的一生有苦有甜d8
2013-09-04 · TA获得超过104个赞
知道答主
回答量:56
采纳率:0%
帮助的人:55.5万
展开全部
这个是递归算法
$sum = $sum + 1;提示错误是因为 $sum 没有初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0c90796
2013-09-08 · TA获得超过1611个赞
知道大有可为答主
回答量:2638
采纳率:0%
帮助的人:1213万
展开全部
任何数的0次幂都为1,sum=1的情况就是a<=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26f7db8
2013-09-05 · TA获得超过160个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:185万
展开全部
没有错啊。。如果真的错了,建议你把错误信息贴出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lvjiaqijiaqi
2013-09-05 · 超过23用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:78万
展开全部
确定会报错???????
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式