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; //調(diào)用一次函數(shù)A(); A($num); function A( $arg ){ echo $arg; //在函數(shù)A里面去,跑去執(zhí)行函數(shù)B去了 B($arg); echo '我們需要不斷的努力,努力到上天都為我們感動(dòng)'; echo $arg.'<br />'; } function B( $number ){ echo $number; echo '俺是狗蛋,執(zhí)行完了<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){ //在函數(shù)體內(nèi)調(diào)用了dg自己喲 dg($n); }else{ echo '--------------'; } echo '俺是狗蛋,俺還沒執(zhí)行' . $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.