我的代码很简单。但它给我上面的错误,函数内部的函数函数是未定义的。为什么?谢谢?
<?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));
?>
答案 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));