За последние 24 часа нас посетили 10309 программистов и 1117 роботов. Сейчас ищут 317 программистов ...

Как вернуть массив, переданный в функцию рекурсивно?

Тема в разделе "PHP для новичков", создана пользователем garirobert, 21 июн 2022.

  1. garirobert

    garirobert Новичок

    С нами с:
    21 июн 2022
    Сообщения:
    2
    Симпатии:
    0
    Приветствую! Извинияюсь, если это слишком тупо, но я голову сломал((
    PHP:
    1. private function threeXplusOne($number, $array = []) {
    2.         if ($number != 1) {
    3.             if ($number%2 != 0) {
    4.  
    5.                 $number = 3*$number + 1;
    6.                 $array[] = $number;
    7.  
    8.                 $this->threeXplusOne($number, $array);
    9.             }
    10.             else {
    11.                 $number = $number/2;
    12.                 $array[] = $number;
    13.  
    14.                 $this->threeXplusOne($number, $array);
    15.             }
    16.  
    17.  
    18.         }
    19.         else return $array;
    20.  
    21.     }
    Почему на выходы я получаю null? Хотя внутри метода $array вардампится...
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.441
    Симпатии:
    1.249
    Адрес:
    Лень
    else убери 19 строка
     
  3. garirobert

    garirobert Новичок

    С нами с:
    21 июн 2022
    Сообщения:
    2
    Симпатии:
    0
    PHP:
    1. private function threeXplusOne(int $number, array $array = []) {
    2.  
    3.         if ($number != 1) {
    4.             if ( $number%2 != 0 ) {
    5.                 $number = $number * 3 + 1;
    6.                 $array[] = $number;
    7.                 return $this->threeXplusOne($number, $array);
    8.             }
    9.             else {
    10.                 $number = $number / 2;
    11.                 $array[] = $number;
    12.                 return $this->threeXplusOne($number, $array);
    13.             }
    14.         }
    15.         return $array;
    16.  
    17.  
    18.     }
    Вот так все работает