PHP fungsi tersuai fungsi rekursif
Fungsi rekursif, rekursi hanyalah nama, dan peraturan fungsi rekursif: badan fungsi memanggil fungsi itu sendiri.
Ini memerlukan kedalaman pemikiran dan pemahaman tertentu Semasa proses pembelajaran bab ini, jika anda benar-benar tidak dapat mengikuti pemikiran anda, anda boleh melangkau bab ini tanpa belajar.
Kerana, dalam kerja sebenar, rekursi berguna, tetapi penggunaannya tidak akan terlalu besar. Rekursi digunakan terutamanya dalam kerja sebenar: semasa mengendalikan fail dan folder.
Penyelesaian:
Sekiranya pemikiran anda tidak dapat mengikuti bab ini, anda boleh memahami secara langsung prinsip blok ini dan menggunakan fungsi pemprosesan fail dan folder sedia ada atau kelas pemprosesan fail.
Izinkan saya bercakap tentang beberapa titik buta dalam pemikiran:
1. Kod dilaksanakan dari atas ke bawah Semua kod tidak mempunyai aksara henti seperti keluar, dan fungsinya mestilah selesai.
2. Jika fungsi melompat dari fungsi A ke fungsi B, fungsi B mesti dilaksanakan sebelum melaksanakan baki kod fungsi A.
3. Fungsi rekursif mesti dapat menyelesaikan pelaksanaan dan mempunyai keadaan tamat, jika tidak fungsi akan memasuki gelung tak terhingga. Fungsi ini akan melaksanakan sendiri selama-lamanya.
Mari kita tulis kod untuk memahaminya:
<?php $num = 10; //调用一次函数A(); A($num); function A( $arg ){ echo $arg; //在函数A里面去,跑去执行函数B去了 B($arg); echo '我们需要不断的努力,努力到上天都为我们感动'; echo $arg.'<br />'; } function B( $number ){ echo $number; echo '俺是狗蛋,执行完了<br />'; } ?>
Melalui contoh di atas, anda akan dapati:
1. Di tengah-tengah pelaksanaan fungsi A, jalankan untuk melaksanakannya Fungsi B
2. Selepas melaksanakan fungsi B, perkara pertama yang dipaparkan ialah: "Saya jalang, pelaksanaan sudah tamat", dan kemudian perkara seterusnya yang dipaparkan ialah: "Kita perlu terus bekerja keras, dan bekerja keras sehingga Tuhan tersentuh”
3. Ini membuktikan apa yang kita panggil titik buta pemikiran Kod itu dilaksanakan dari atas ke bawah, dan kod itu mesti dilaksanakan hingga selesai.
Mari tulis kod rekursif mudah dan biarkan fungsi memanggil sendiri.
<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内调用了dg自己哟 dg($n); }else{ echo '--------------'; } echo '俺是狗蛋,俺还没执行' . $n . '<br />'; } ?>
Teka apa hasilnya? kenapa ni?
Mari kita fikirkan dengan teliti:
1. Kali pertama dg() dipanggil, nombor $n = 2 dihantar ke dg, dan 2 dipaparkan dahulu
2 . Kemudian tetapkan nilai $n - 1 $n kepada 1
3. Kemudian nilaikan sama ada $n lebih besar daripada 0, ia mesti lebih besar daripada 0, jadi panggil rekursi sendiri dan laksanakan diri anda semula.
4. Apabila melaksanakan dg() anda sendiri untuk kali kedua, bahagian bawah bergema 'Saya anjing, saya belum melaksanakannya' '
' dilaksanakan belum tiba. Tunggu pelaksanaan selesai sebelum melaksanakan
5.$n bersamaan dengan 1 pada masa ini, jadi 1 dipaparkan.
6.$n menolak dirinya sekali, dan hasil $n ialah 0
7.$n pastinya tidak benar jika lebih besar daripada 0, jadi mesej dipaparkan: " ------ --------"
8. Pada masa ini sudah tiba masanya untuk melaksanakan: echo 'Saya jalang, saya belum melaksanakannya lagi' . $n . '
';
9. Pelaksanaan kedua dg() selesai. Kod dg() pertama belum dilaksanakan lagi, jadi kod selebihnya dalam titik 4 dilaksanakan.