关于php调用函数问题

我把2块PHP分开了,一块是定义函数,一块是调用函数。请看下2图:问题出现在第3图,找不到变量。为什么出现这样情况呢?我不是在第一块调用了吗,为什么到了第2块就用不了了?如果想让他正常显示,应该怎么改?

第1个回答  2016-08-07
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)也求出了最后函数执行终止追问

最讨厌你这种答非所问!贪快有什么用!大家给差评他!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网