Почему я не могу вернуть значение, используя obj в классе, когда я использую рекурсию? - PullRequest
0 голосов
/ 25 марта 2019

Написание факториальной программы с использованием рекурсии, класса и функции.

Отображает ошибку: Uncaught Error: вызов неопределенного факта функции ()

 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 Ответ

1 голос
/ 25 марта 2019

Ошибка в строке № 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;

Код работающего здесь можно посмотреть по ссылке: http://sandbox.onlinephpfunctions.com/code/1c1131c1ade963048266a0e426e9357232aaddd5

...