‘壹’ 麻烦大家帮我看个php递归函数问题
第一、$text=recurset(5);错了,应该是recurser,另外$text后面的分号应该是半角,不应该是全角。
写代码要养成一个习惯:
function recurser ($n)
{
if ($n==0){
return 1;
}else{
return $n * recurser($n-1);
}
}
$text=recurser(5);
echo $text;
第二、关于你问的问题,return的返回值
首先我们要清楚这个函数是做什么用的,其实每个函数就是一个逻辑推算。这个函数既然要递归求阶乘。那它就应该是5*4*3*2*1;
我们看这个函数它实际是5*(4*(3*(2*(1*1)))))
这样我们就看出了return 1是干什么用的了,当n的值为0时,我们不能返回0如果那样结果肯定是0了,那就没什么意义,所以当我们要得到$n * recurser($n-1);时,要保证recurser($n-1)的值最小为1;
‘贰’ 急!用php 递归法求n的阶乘
<?php
function f($n)
{
$out = -1;
if($n<0)
echo "输入不能是负数";
else if($n==0||$n==1)
$out=1;
else $out=f($n-1)*$n;
return $out;
}
echo f(6);
?>
‘叁’ PHP里的这个递归函数是怎么个执行顺序
当输出了<-->之后就不是做test($n-1)的递归了,而是往外逐层的跳跃,在跳跃前对“$j=2;echo$n;”进行操作。。
不过楼主你的“答案”似乎就有问题哦~
------
希望能有所帮助
‘肆’ 如何理解php中的递归函数 (详细讲解)
递归其实就是“一个函数的自调用”
在这个“自调用”的过程中,必须要有一个变化的“参数”,当这个“参数”达到你的期望值的时候,终止该“自调用”过程
拿楼主的程序来说
demo($n)内部又有调用demo($n-1),构成了“自调用”
且,$n又有一个“期望值”,即是$n>1,不满足此条件时,该自调用终止
即是说,最后一个执行的demo是demo($n9-1),其中$n9=2,然后返回为1(因为执行了return 1)
则$n9*demo($n9-1)即等于 2*demo(2-1),又等于2*1=2;
则$n8*demo($n8-1)即等于 3*demo(3-1),又等于3*2=6;
则$n7*demo($n7-1)即等于 4*demo(4-1),又等于4*6=24;
……
依次类推
这样想:
demo(1)是等于1,这个没有疑问吧?
然后demo(2)等于2*demo(1)=2*1=2
然后demo(3)等于3*demo(2)=3*2=6
……
一直到demo(10)
‘伍’ php递归的方法求和1+2+3+...+n
php递归码和求和册或1+2+3+...+n的方法如州模伍下:
function sum($n) {
if ($n == 1) {
return 1;
}
return $n + sum($n - 1);
}
echo sum(n);
‘陆’ php,使用递归的方式求0-n之间所有整数和
可以这样操作:
<?php
functionadd($max,$sum=0)
{
if($max!=0){
$sum+=$max;
returnadd($max-1,$sum);
}
return$sum;
}
echoadd(100);
//输出5050,就是0到100之间所有整数的和。