Rekursioon parameetriga PHP-s

Võtame rekursiooni abil järjestikku massiivi elemendid välja. Olgu massiiv algselt edastatud funktsiooni parameetrina:

php<?php
  func([1, 2, 3]);
?>

Teeme seda esialgu ilma rekursioonita, kasutades funktsiooni array_shift et väljastada kõik massiivi elemendid järjekorras:

php<?php
  function func($arr) {
    var_dump(array_shift($arr)); // väljastab 1
    var_dump($arr); // väljastab [2, 3] - massiiv vähenes
    
    var_dump(array_shift($arr)); // väljastab 2
    var_dump($arr); // väljastab [3] - massiiv vähenes
    
    var_dump(array_shift($arr)); // väljastab 3
    var_dump($arr); // väljastab [] - massiiv on tühi
  }
  
  func([1, 2, 3]);
?>

Nagu näete, funktsioon array_shift lõikab välja ja tagastab massiivi esimese elemendi, samal ajal massiiv ise väheneb selle elemendi võrra.

Kasutame nüüd rekursiooni:

php<?php
  function func($arr) {
    var_dump(array_shift($arr));
    var_dump($arr);
    
    if (count($arr) !== 0) {
      func($arr);
    }
  }
  
  func([1, 2, 3]);
?>

Tegelikult on muidugi lihtsam massiivi elemente läbida tsükliga. Toodud näited lihtsalt demonstreerivad rekursiooni tööd lihtsate näidete peal (mitte elulistest). Kasulikumad rekursiooni rakendusnäited on lihtsalt keerulisemad, me analüüsime neid veidi allpool.

Задание 1

Antud massiiv:

php<?php
  $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>

Kasutades rekursiooni, väljasta selle massiivi elemendid ekraanile.