Đệ quy trong PHP

Đệ quy là một vấn đề nan giải đối với những bạn mới học lập trình web vì nó được sử dụng trong các ứng dụng như đệ quy menu đa cấp, chuyên mục đa cấp nhưng thực sự người nắm được giải thuật này không nhiều. Cùng eLib tìm hiểu về đệ quy qua bài viết dưới đây.

Đệ quy trong PHP

1. Đệ quy trong PHP là gì?

Đệ quy trong PHP là quá trình trong đó một phương thức gọi lại chính nó một cách liên tiếp. Một phương thức trong php gọi lại chính nó được gọi là phương thức đệ quy.

Sử dụng đệ quy giúp code chặt chẽ hơn nhưng sẽ khó để hiểu hơn.

Cú pháp:

return_type function_name() { 
    // code
    function_name();
} 

2. Ví dụ về đệ quy trong php

Dưới đây là các ví dụ về cách sử dụng đệ quy trong php.

Ví dụ 1: Vòng lặp vô tận

Bạn nên ngừng load trang hoặc tắt trình duyệt tránh bị đơ máy vì vòng lặp vô hạn.

?php
function p()
{
    echo "hello <br>";
    p();
}
p();
?>

Kết quả:

hello
hello
...

Ví dụ 2: Vòng lặp có hạn

<?php
function p($count)
{
    if ($count <= 5)
    {
        echo ("hello $count <br>");
        p($count + 1);
    }
}
// gọi hàm p()
p(1);
?>

Kết quả:

hello 1
hello 2
hello 3
hello 4
hello 5

Ví dụ 3: Tính giai thừa

<?php
function giaithua($n)
{
    if ($n == 1) return 1;
    else return ($n * giaithua($n - 1));
}
// tính giai thừa của 5
echo "Giai thừa của 5 là:" . giaithua(5);
?>

Kết quả:

Giai thừa của 5 là: 120

Chương trình trên hoạt động như sau:

giaithua(5)
   giaithua(4)
      giaithua(3)
         giaithua(2)
            giaithua(1)
               return 1
            return 2*1 = 2
         return 3*2 = 6
      return 4*6 = 24
   return 5*24 = 120

Ví dụ 4: Dãy số Fibonacci

<?php
function printFibonacci($count)
{
    static $n1 = 0;
    static $n2 = 1;
    static $n3 = 0;

    if ($count > 0)
    {
        $n3 = $n1 + $n2;
        $n1 = $n2;
        $n2 = $n3;
        echo (" " . $n3);
        printFibonacci($count - 1);
    }
}

printFibonacci(15);
?>

Kết quả:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

Trên đây là bài viết của eLib về đệ quy trong PHP. Giải thuật đệ quy thật sự rất khó phải không các bạn, nên để nắm được nó cần phải luyện tập nhiều thời gian. Chúng tôi hy vọng qua bài này sẽ làm tiền đề cho các bạn đam mê giải thuật tìm tòi thêm. Chúc các bạn thành công!

Ngày:09/10/2020 Chia sẻ bởi:Phuong

CÓ THỂ BẠN QUAN TÂM