<?php
//使用函数递归实现阶乘功能
function order($arg)
{
if ($arg>1)
return $arg * order($arg -1);
return 1;
}
function call()
{
echo " 通过变量调用函数<br> " ;
}
$n=6;
$temp = order($n);
echo "$n 的阶乘是$temp<br> " ;
$arg = "call";
$arg( ) ;
?>请问下:
return $arg * order($arg -1);  //返回函数值
return 1;   //返回值
这两句,return是结束函数,那么return 1;有什么作用呐?我去掉return 1;答案就不对。但是return $arg * order($arg -1);过后就结束了return 1;还执行嘛?书上写的一个是返回函数值,一个是返回值,两者有什么区别?谢谢麻烦各位大虾指点指点~~~~~~

解决方案 »

  1.   


    if ($arg>1){
      return $arg * order($arg -1);
    }
    return 1; 其实是这样的,因为return $arg * order($arg -1);只有一句,所以省略了大括号,明白了吧?
      

  2.   

    去掉了return 1,以后,就相当于一直跑,一直跑跑到了一个死胡同里面,不去掉return就相当于,一直跑,最后可以看到出口。
      

  3.   

    函数没有显式的返回值时,返回的是 NULL你有 $arg * order($arg -1)
    如果 order($arg -1) 返回 NULL
    那么 $arg * order($arg -1) 将为 0
    显然不是你需要的