Đệ quy với tham số trong PHP
Hãy, bằng cách sử dụng đệ quy, lần lượt in ra các phần tử của mảng. Giả sử mảng ban đầu được truyền vào hàm dưới dạng tham số:
<?php
func([1, 2, 3]);
?>
Trước tiên, hãy không dùng đệ quy, sử dụng hàm
array_shift
để in lần lượt tất cả các phần tử của mảng:
<?php
function func($arr) {
var_dump(array_shift($arr)); // sẽ in ra 1
var_dump($arr); // sẽ in ra [2, 3] - mảng đã giảm
var_dump(array_shift($arr)); // sẽ in ra 2
var_dump($arr); // sẽ in ra [3] - mảng đã giảm
var_dump(array_shift($arr)); // sẽ in ra 3
var_dump($arr); // sẽ in ra [] - mảng rỗng
}
func([1, 2, 3]);
?>
Như bạn thấy, hàm array_shift
cắt và trả về phần tử đầu tiên của mảng,
đồng thời chính mảng đó bị giảm đi phần tử này.
Bây giờ hãy sử dụng đệ quy:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Trên thực tế, tất nhiên, cách dễ nhất là duyệt các phần tử mảng bằng vòng lặp. Các ví dụ đưa ra chỉ đơn giản minh họa cách hoạt động của đệ quy qua các ví dụ đơn giản (không thực tế). Các ví dụ hữu ích hơn về ứng dụng đệ quy đơn giản là phức tạp hơn, chúng ta sẽ phân tích chúng dưới đây một chút.
Cho mảng:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Bằng cách sử dụng đệ quy, hãy hiển thị các phần tử của mảng này ra màn hình.