PHP-ում պարամետրով ռեկուրսիա

Եկեք ռեկուրսիայի միջոցով հաջորդաբար արտածենք զանգվածի տարրերը: Թող զանգվածը սկզբում փոխանցվի ֆունկցիայի պարամետրին:

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

Եկեք առայժմ առանց ռեկուրսիայի՝ օգտագործելով array_shift ֆունկցիան, արտածենք զանգվածի բոլոր տարրերը հերթով:

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

Իրականում, իհարկե, ավելի հեշտ է զանգվածի տարրերը դուրս բերել ցիկլով: Բերված օրինակները պարզապես ցույց են տալիս ռեկուրսիայի աշխատանքը պարզ օրինակներով (ոչ կյանքից վերցված): Ավելի օգտակար կիրառական ռեկուրսիայի օրինակներն ուղղակի ավելի բարդ են, մենք դրանք կվերլուծենք մի փոքր ավելի ուշ:

Задание 1

Տրված է զանգված.

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

Օգտագործելով ռեկուրսիա, արտածեք այս զանգվածի տարրերը էկրանին: