Rekurzia s parametrom v PHP
Pomocou rekurzie postupne vypíšme prvky poľa. Nech je pole na začiatku odovzdané parametrom funkcie:
<?php
func([1, 2, 3]);
?>
Najprv bez rekurzie, pomocou funkcie
array_shift
vypíšme všetky prvky poľa jeden po druhom:
<?php
function func($arr) {
var_dump(array_shift($arr)); // vypíše 1
var_dump($arr); // vypíše [2, 3] - pole sa zmenšilo
var_dump(array_shift($arr)); // vypíše 2
var_dump($arr); // vypíše [3] - pole sa zmenšilo
var_dump(array_shift($arr)); // vypíše 3
var_dump($arr); // vypíše [] - pole je prázdne
}
func([1, 2, 3]);
?>
Ako vidíte, funkcia array_shift
vyreže a vráti prvý prvok poľa,
pričom samotné pole sa o tento prvok zmenší.
Teraz použime rekurziu:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Samozrejme, v praxi by bolo najjednoduchšie prechádzať prvky poľa pomocou cyklu. Uvedené príklady jednoducho demonštrujú prácu rekurzie na jednoduchých (neživotných) príkladoch. Užitočnejšie príklady použitia rekurzie sú zložitejšie, rozoberieme ich o niečo neskôr.
Dané pole:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Pomocou rekurzie vypíšte prvky tohto poľa na obrazovku.