Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Kod Carian Perduaan Rekursif Saya Tiada Kembali Sebaliknya Benar?

Mengapa Kod Carian Perduaan Rekursif Saya Tiada Kembali Sebaliknya Benar?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 03:18:27498semak imbas

Why Does My Recursive Binary Search Code Return None Instead of True?

Kod Rekursif Gagal Mengembalikan Nilai Sebenar

Kod yang diberikan bertujuan untuk menentukan sama ada aksara wujud dalam rentetan menggunakan pendekatan carian binari. Walau bagaimanapun, ia gagal mengembalikan nilai True yang dijangkakan dan terus mengembalikan Tiada.

Analisis:

Kod ini menggunakan fungsi rekursif isIn yang mengambil aksara dan rentetan sebagai input. Ia melakukan carian binari dengan membahagikan rentetan kepada dua bahagian pada titik tengah. Jika aksara itu sepadan dengan titik tengah, ia mencetak mesej yang menunjukkan kehadiran watak itu dan mengembalikan Benar.

Jika aksara itu lebih besar daripada aksara titik tengah dan titik tengah bukan aksara terakhir dalam rentetan (iaitu, terdapat aksara pegun untuk dicari), fungsi mengemas kini rentetan dengan mengalih keluar separuh pertama. Jika aksara kurang daripada aksara titik tengah dan titik tengah bukan aksara pertama dalam rentetan (iaitu, masih terdapat aksara untuk dicari), fungsi mengemas kini rentetan dengan mengalih keluar separuh kedua.

Walau bagaimanapun, kod itu tidak mempunyai penyataan pulangan pada baris terakhir dalam blok lain. Tanpa penyataan pulangan ini, fungsi hanya ditamatkan tanpa mengembalikan nilai secara eksplisit. Ini mengakibatkan Python secara tersirat mengembalikan Tiada, itulah sebabnya fungsi itu terus mengembalikan Tiada.

Penyelesaian:

Untuk membetulkan isu, anda perlu menambah pernyataan pulangan pada baris terakhir dalam blok else:

<code class="python">return isIn(char, aStr)</code>

Dengan pengubahsuaian ini, fungsi akan mengembalikan hasil panggilan rekursif, yang akhirnya akan mengembalikan True jika aksara ditemui dalam rentetan.

Atas ialah kandungan terperinci Mengapa Kod Carian Perduaan Rekursif Saya Tiada Kembali Sebaliknya Benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn