PHP-ում պարամետրով ռեկուրսիա
Եկեք ռեկուրսիայի միջոցով հաջորդաբար արտածենք զանգվածի տարրերը: Թող զանգվածը սկզբում փոխանցվի ֆունկցիայի պարամետրին:
<?php
func([1, 2, 3]);
?>
Եկեք առայժմ առանց ռեկուրսիայի՝ օգտագործելով
array_shift
ֆունկցիան, արտածենք զանգվածի բոլոր տարրերը հերթով:
<?php
function func($arr) {
var_dump(array_shift($arr)); // կարտածի 1
var_dump($arr); // կարտածի [2, 3] - զանգվածը փոքրացել է
var_dump(array_shift($arr)); // կարտածի 2
var_dump($arr); // կարտածի [3] - զանգվածը փոքրացել է
var_dump(array_shift($arr)); // կարտածի 3
var_dump($arr); // կարտածի [] - զանգվածը դատարկ է
}
func([1, 2, 3]);
?>
Ինչպես տեսնում եք, array_shift ֆունկցիան
հանում և վերադարձնում է զանգվածի առաջին տարրը,
մինչդեռ ինքը՝ զանգվածը, փոքրանում է այդ տարրով:
Հիմա եկեք օգտագործենք ռեկուրսիա:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Իրականում, իհարկե, ավելի հեշտ է զանգվածի տարրերը դուրս բերել ցիկլով: Բերված օրինակները պարզապես ցույց են տալիս ռեկուրսիայի աշխատանքը պարզ օրինակներով (ոչ կյանքից վերցված): Ավելի օգտակար կիրառական ռեկուրսիայի օրինակներն ուղղակի ավելի բարդ են, մենք դրանք կվերլուծենք մի փոքր ավելի ուշ:
Տրված է զանգված.
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Օգտագործելով ռեկուրսիա, արտածեք այս զանգվածի տարրերը էկրանին: