Kod Rekursif Mengembalikan Tiada: Memahami Sebab
Kod Python yang disediakan bertujuan untuk mencari aksara tertentu dalam rentetan menggunakan pendekatan rekursif. Walau bagaimanapun, ia berulang kali mengembalikan Tiada walaupun menunjukkan kehadirannya dengan kenyataan cetakan 'saya di sini sekarang.' Untuk memahami sebab asas di sebalik gelagat ini, mari kita mendalami struktur kod dan temui sumber sifatnya yang tidak kembali.
Fungsi isIn menggunakan strategi divide-and-conquer, membahagikan rentetan aStr kepada segmen yang sama dan mencari bahagian yang ditetapkan secara rekursif sehingga ia mengesan atau menghapuskan watak tersebut. Cetakan dalam kes asas, 'saya di sini sekarang,' berfungsi sebagai pengesahan mencari watak.
Pengguguran pernyataan pemulangan pada baris akhir terbukti kritikal. Apabila fungsi itu mencapai penghujung jejak pelaksanaannya tanpa menemui pemulangan yang jelas, ia sememangnya lalai untuk mengembalikan Tiada. Ini menerangkan sebab True tidak dikembalikan apabila watak itu berjaya ditemui.
Untuk membetulkan isu ini, pernyataan pemulangan mesti dimasukkan ke dalam baris terakhir, seperti yang dicadangkan oleh penyelesaian:
<code class="python">return isIn(char, aStr)</code>
Dengan pembetulan ini, fungsi rekursif akan menyebarkan nilai Benar dengan sewajarnya apabila ia terjumpa pada aksara yang diingini dalam keturunan rekursifnya, menjamin pulangan yang dijangkakan dan mengelakkan tindak balas Tiada lalai.
Atas ialah kandungan terperinci Mengapa Kod Python Rekursif Saya Tiada Kembali Walaupun Menemui Watak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!