使用递归时,为什么不能在类中使用obj返回值?

时间:2019-03-25 07:39:09

标签: php function class recursion

使用递归,类和函数编写阶乘程序。

显示错误:未捕获的错误:调用未定义的函数fact()

 class factorial{
       public function fact($n){
              if($n==1){
                 return 1;
               }

               else{
                   return $n*fact($n-1);                       
               }
       }
   }

$obj= new factorial();
$print=$obj->fact(3);
echo $print;

1 个答案:

答案 0 :(得分:1)

错误出现在第11行,即;

return $n*fact($n-1);

在此方法事实未正确调用。您必须使用$ this运算符在任何方法上调用该类中的函数。

因此,您只需将其更改为$this->fact($n-1)

为方便起见,我在下面提供了整个修订后的代码,请看一看。

<?php
        //Enter your code here, enjoy!

class factorial{
       public function fact($n){
              if($n==1){
                 return 1;
               }

               else{
                   return $n*$this->fact($n-1);                       
               }
       }
   }

$obj= new factorial();
$print=$obj->fact(3);
echo $print;

您可以在以下链接中查看工作的代码:TimePicker