Mendedahkan rahsia fungsi rekursif dalam PHP untuk orang biasa
P粉211600174
P粉211600174 2023-10-17 08:41:23
0
2
710

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粉211600174
P粉211600174

membalas semua(2)
P粉709307865

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粉604669414

Istilah orang awam:

Fungsi rekursif ialah fungsi yang memanggil dirinya sendiri

Pergi lebih dalam sedikit:

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); // 

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.

(20/4/10) Kemas kini:

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,

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan