Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah maksud fungsi rekursif dalam php

Apakah maksud fungsi rekursif dalam php

青灯夜游
青灯夜游asal
2022-05-31 12:01:152235semak imbas

Dalam PHP, fungsi rekursif merujuk kepada fungsi panggilan kendiri, iaitu, fungsi memanggil dirinya secara langsung atau tidak langsung dalam badan fungsi apabila menggunakan fungsi rekursif, syarat pertimbangan perlu ditambahkan pada badan fungsi untuk Menentukan sama ada panggilan rekursif perlu diteruskan Apabila syarat dipenuhi, panggilan rekursif fungsi akan ditamatkan.

Apakah maksud fungsi rekursif dalam php

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Fungsi rekursif ialah fungsi panggilan kendiri, iaitu fungsi Panggil diri anda secara langsung atau tidak langsung dalam badan fungsi. Perlu diingat bahawa apabila menggunakan fungsi rekursif, syarat pertimbangan biasanya dilampirkan pada badan fungsi untuk menentukan sama ada panggilan rekursif perlu diteruskan Apabila syarat dipenuhi, panggilan rekursif fungsi akan ditamatkan.

Kelebihan terbesar fungsi rekursif ialah ia boleh memudahkan prosedur yang kompleks dan berulang dalam atur cara dan boleh menggunakan ciri ini untuk melaksanakan beberapa operasi yang lebih kompleks. Contohnya, operasi seperti senarai, menu pokok dinamik dan traversal direktori. Fungsi bukan rekursif yang sepadan, walaupun cekap, sukar untuk diprogramkan dan agak tidak boleh dibaca.

Pemikiran Rekursif

Idea utama rekursi adalah untuk mengubah masalah yang agak kompleks (masalah asal) kepada masalah yang serupa dengan masalah asal Selesaikan masalah berskala lebih kecil (sub-masalah) Apabila setiap masalah kecil diselesaikan, masalah besar terakhir secara semula jadi akan diselesaikan.

Kaedah rekursif hanya memerlukan sejumlah kecil atur cara untuk menerangkan berbilang pengiraan berulang yang diperlukan dalam proses penyelesaian masalah, sekali gus mengurangkan jumlah kod dalam atur cara. Sudah tentu, fungsi rekursif tidak sempurna, dan mereka juga mempunyai kekurangan tertentu, iaitu, fungsi kaedah rekursif tidak beroperasi dengan cekap.

Bilangan maksimum tahap rekursi dalam PHP adalah tidak terhad Ini berkaitan dengan had memori program PHP5 membenarkan atur cara menggunakan 128M memori secara lalai, jadi apabila bilangan tahap rekursi juga besar, 128M memori telah habis , program akan menjana ralat maut dan keluar. PHP7 membenarkan 256M memori secara lalai.

Memori maksimum yang dibenarkan oleh PHP boleh diubah suai dengan mengubah suai fail php.ini seperti berikut:

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit=256M

Rekursi dalam PHP

Untuk mencapai rekursi, dua syarat berikut perlu dipenuhi:

  • Sub-masalah mestilah sama dengan masalah asal, dan lebih mudah.

  • tidak boleh menyebut dirinya tanpa had, mesti ada jalan keluar yang memudahkan pemprosesan situasi bukan rekursif.

Contoh 1: Gunakan fungsi rekursif untuk melaksanakan faktorial bagi n!

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);   
function factorial($num){
    //确定递归函数的出口
    if($num == 1){
        return 1;
    }else{
        return $num*factorial($num - 1);
    }
}
echo &#39;15 的阶乘是:&#39;.factorial(15);
?>

Keputusan larian adalah seperti berikut:

Apakah maksud fungsi rekursif dalam php

Contoh 2: Kira jujukan Fibonacci.

Jujukan Fibonacci adalah seperti berikut:

1, 1, 2, 3, 5, 8, 13, 21, 34,...

Kod pelaksanaan adalah seperti berikut:

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);   
function demo($num){
    //
    if($num == 1 || $num == 2){
        return 1;
    }else{
        return demo($num - 1) + demo($num - 2);
    }
}
echo &#39;数列第 10 位是:&#39;.demo(10);
?>

Hasil yang dijalankan adalah seperti berikut:

Apakah maksud fungsi rekursif dalam php

Pembelajaran yang disyorkan: "Tutorial Video PHP

Atas ialah kandungan terperinci Apakah maksud fungsi rekursif dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn