调用未定义的函数factorial()

时间:2017-12-24 16:04:28

标签: php factorial

我的代码很简单。但它给我上面的错误,函数内部的函数函数是未定义的。为什么?谢谢?

<?php

class fact
{
    public function factorial($number) { 

    if ($number < 2) { 
        return 1; 
    } else { 
        return ($number * factorial($number-1)); 
    } 
}
}

$obj =  new fact();
var_dump($obj->factorial(6));

?>

2 个答案:

答案 0 :(得分:2)

引用factorial将查找该名称的全局函数。但是您已将其编写为方法,因此必须在对象上专门调用它:

return ($number * $this->factorial($number-1));

$this->引用它所调用的对象实例。

答案 1 :(得分:2)

递归调用需要以$this为前缀,如下所示:

<?php

class fact
{
    public function factorial($number) { 

        if ($number < 2) { 
           return 1; 
        } else { 
        return ($number * $this->factorial($number-1)); 
        } 
    }
}

$obj =  new fact();
var_dump($obj->factorial(6));