麻烦大家帮我看个PHP递归函数问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:37:38
大家好偶是一菜鸟,没学过数据结构。自学PHP,今天看到一个递归函数想了好半天就是想不通,主要是其中return 语句的作用是什么,它的返回值是给谁的?我不清楚这个。程序如下:
<?PHP
function recurser ($n)
{ if ($n==0)
return 1;(这个1是返回给谁的?)
else
return $n * recurser($n-1);
}
$text=recurset(5);
echo $text;
?>这是个求5的阶乘的程序。谢谢O(∩_∩)O~
?>
各位GG小弟经年刚是大一还没一丁点编程头脑,这个菜鸟问题希望GG们不要笑话

第一、$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;

你这个程序,返回值就是给了$text,也就是说,你调用recurser这个方法,这个方法的值就是$n * recurser($n-1);
echo recurset(5);就是5的阶乘,不知道我说的你是否明白