PHP,函数问题

求大佛帮忙,我想做一个求和,但是呢,一定要用到function,因为底下还有别的。谢谢... 求大佛帮忙,我想做一个求和,但是呢,一定要用到function,因为底下还有别的。谢谢 展开
 我来答
Inpool
2016-11-09 · TA获得超过782个赞
知道小有建树答主
回答量:486
采纳率:66%
帮助的人:442万
展开全部
函数返回值用return, 不用echo
function total($maxinum_number){
    $sum = 0;
    for($x=1;$x<=$maxinum_number;$x++){
        $sum += $x;
    }
    return $sum;
}
更多追问追答
追问
哥们儿,我把那个$maximum_number赋值检查了,没出来啊
哥们儿,我把那个$maximum_number赋值检查了,没出来啊
呆萌小咖77
2016-11-09 · TA获得超过797个赞
知道小有建树答主
回答量:813
采纳率:96%
帮助的人:156万
展开全部
先说下代码为什么这样写
递归分为二步:
1.递推 2.回归
递推:
递推为正向的推导,即从前向后的分析问题,寻找递推的条件。
1-3求和为例
sum(1) = 1 + 0
sum(2) = 2 + 1
sum(3) = 3 + 2 + 1
可发现
sum(1) = 1 + 0
sum(2) = 2 + sum(2-1)
sum(3) = 3 + sum(3-1)
这样一来把求 sum(3) 转为求sum(2)的把求sum(2)的转为求sum(1)
回归
自后向前再追逆一遍。论证前期推导的正确性。

经过以上分析所以得函数sum的公式为:
sum(n) = n + sum(n-1)
所以sum(n)的函数原型为:
function sum($n){
return $n + sum($n-1);
}
但这段代码还是有问题,因为还缺少了退出条件。所以写递归的时候注意了。一定要写一个 if 语句用来判断递归何时退出。没有退出条件的递归就是死循环。
怎么退出呢?退出条件是什么?这里由于是计算1-3之和所以这个函数的成立条件为 0<n<=3
当sum(n) (n<0时是不成立的) 所以写出if条件:
function sum($n){
if($n>0)
return $n + sum($n-1);
return
return $a; //这里让它的最后一次循环加了0而不是-1,我这里运行的跟你的不一样吧。。呵呵。。因为你的if条件是$n > 1 所在 else 里 $n <= 1 所以你的最后加了1就退出了。。
}
最后总结下运行过程
用一行表示下,也许这样表达你能明白,这段代码就相当于如下的公式。
sum(3+sum(2+sum(1)))
如果让你去运行你会如何呢?

会先看到外层的sum(3+当看到+号了发现后面还有一个函数没有求,哎算了。。。sum(3)现在求不了我把sum(2)求出来再求sum(3)吧,于
是你看sum(2
又是看到+号后面又有了一个sum函数是求sum(1)的心想这回看你还有没有了。。嘻嘻。。。好了sum(1)求出来了再把sum(1)的值返回再加上
2 也就是求出了sum(2),sum(2)求出来了再加上3,sum(3)也求出了最后函数执行终止。。。。
讲了这么多。。只是为了你理解的透彻些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式