Вызов неопределенной функции 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));

?>

1

Решение

привязка factorial будет искать глобальную функцию с таким именем. Но вы написали его как метод, поэтому он должен вызываться специально для объекта:

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

$this-> ссылается на экземпляр объекта, внутри которого он вызывается.

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));
2

По вопросам рекламы [email protected]