Rumah > Soal Jawab > teks badan
Bolehkah sesiapa menerangkan kepada saya fungsi rekursif dalam PHP (tanpa menggunakan Fibonacci) dalam istilah awam dan menggunakan contoh? Saya sedang melihat contoh tetapi Fibonacci hilang sepenuhnya pada saya!
Terima kasih terlebih dahulu ;-) Selain itu, berapa kerap anda menggunakannya dalam pembangunan web?
P粉7093078652023-10-18 00:23:39
Salah satu contoh ialah mencetak setiap fail dalam mana-mana subdirektori bagi direktori tertentu (jika tiada pautan sym dalam direktori tersebut, ini mungkin merosakkan fungsi dalam beberapa cara). Kod pseudo untuk mencetak semua fail adalah seperti berikut:
function printAllFiles($dir) { foreach (getAllDirectories($dir) as $f) { printAllFiles($f); // here is the recursive call } foreach (getAllFiles($dir) as $f) { echo $f; } }
Ideanya adalah untuk mencetak semua subdirektori dahulu dan kemudian fail direktori semasa. Idea ini berfungsi untuk semua subdirektori, itulah sebabnya fungsi ini dipanggil secara rekursif untuk semua subdirektori.
Jika anda ingin mencuba contoh ini, anda perlu menyemak direktori khas .
和 ..
,否则你会陷入调用 printAllFiles(". ")
一直如此。此外,您必须检查要打印的内容以及当前的工作目录是什么(请参阅opendir()
、getcwd()
...).
P粉6046694142023-10-18 00:03:08
Fungsi rekursif ialah fungsi yang memanggil dirinya sendiri
Jika fungsi terus memanggil dirinya sendiri, bagaimana ia tahu bila hendak berhenti? Anda menetapkan syarat, dipanggil kes asas. Kes asas memberitahu panggilan rekursif kami masa untuk berhenti, jika tidak, ia akan gelung tanpa had.
Bagi saya, contoh yang bagus untuk dipelajari ialah Factorial一个>. Dari komen di bawah nampaknya fungsi faktorial agak banyak, saya akan tinggalkan di sini sekiranya anda memerlukannya.
function fact($n) { if ($n === 0) { // our base case return 1; } else { return $n * fact($n-1); // <--calling itself. } }
Berkenaan menggunakan fungsi rekursif dalam pembangunan web, saya secara peribadi tidak menggunakan panggilan rekursif. Bukannya saya fikir bergantung pada rekursi adalah amalan yang tidak baik, tetapi ia tidak sepatutnya menjadi pilihan pertama anda. Jika digunakan secara tidak betul, ia boleh membawa maut.
Walaupun saya tidak dapat bersaing dengan contoh daftar kandungan, saya harap ini membantu.
Adalah berguna untuk menyemak soalan ini, di mana jawapan yang diterima menunjukkan dalam istilah orang awam cara fungsi rekursif berfungsi. Walaupun soalan OP melibatkan Java, konsepnya adalah sama,