Rekurze s parametrem v PHP
Pomocí rekurze postupně vypišme prvky pole. Nechť je pole inicialně předáno parametrům funkce:
php<?php
func([1, 2, 3]);
?>
Nyní zkusme bez rekurze pomocí funkce
array_shift
vypišme všechny prvky pole jeden po druhém:
php<?php
function func($arr) {
var_dump(array_shift($arr)); // vypíše 1
var_dump($arr); // vypíše [2, 3] - pole se zmenšilo
var_dump(array_shift($arr)); // vypíše 2
var_dump($arr); // vypíše [3] - pole se zmenšilo
var_dump(array_shift($arr)); // vypíše 3
var_dump($arr); // vypíše [] - pole je prázdné
}
func([1, 2, 3]);
?>
Jak vidíte, funkce array_shift
vyjme a vrátí první prvek pole,
přičemž samotné pole se tímto prvkem zmenší.
Nyní použijme rekurzi:
php<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Samozřejmě, nejjednodušší je projít prvky pole pomocí cyklu. Uvedené příklady jsou pouze demonstrací práce rekurze na jednoduchých (ne reálných) příkladech. Užitečnější příklady použití rekurze jsou složitější, rozebereme je níže.
Задание 1
Je dáno pole:
php<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Pomocí rekurze vypište prvky tohoto pole na obrazovku.