Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi Rekursif Saya Kadangkala Tiada Kembali?

Mengapa Fungsi Rekursif Saya Kadangkala Tiada Kembali?

DDD
DDDasal
2024-12-29 04:53:10852semak imbas

Why Does My Recursive Function Sometimes Return None?

Mengapa Fungsi Rekursif Tiada Kembali?

Dalam kod yang anda berikan, fungsi get_input() menghadapi isu apabila ia mengembalikan Tiada sekali-sekala. Ini berlaku apabila pengguna memasukkan nilai yang tidak sah pada mulanya dan kemudian memasukkan "a" atau "b." Untuk memahami sebabnya, mari kita periksa fungsi dengan lebih terperinci.

Fungsi get_input() menggesa pengguna untuk memasukkan "a" atau "b." Jika input tidak sepadan, ia mencetak mesej dan secara rekursif memanggil dirinya sendiri untuk mendapatkan input semula. Aliran rekursif ini memastikan bahawa pengguna menyediakan input yang sah.

Isu timbul dalam pernyataan if di dalam fungsi. Apabila pengguna pada mulanya memasukkan nilai yang tidak sah dan fungsi memanggil dirinya secara rekursif, panggilan rekursif tidak mengembalikan apa-apa. Sebaliknya, ia jatuh pada penghujung fungsi.

Dalam Python, jatuh pada hujung fungsi adalah bersamaan dengan mengembalikan Tiada. Ini bermakna fungsi get_input() mengembalikan Tiada apabila pengguna mula-mula memasukkan nilai yang tidak sah.

Untuk menyelesaikan isu ini, anda perlu memastikan bahawa panggilan rekursif mengembalikan nilai. Dalam pernyataan if anda, gantikan baris berikut:

get_input()

Dengan yang berikut:

return get_input()

Pengubahsuaian ini memastikan bahawa panggilan rekursif mengembalikan hasil panggilan berikutnya, yang akan input yang betul ("a" atau "b") atau Tiada jika pengguna terus memasukkan nilai yang tidak sah.

Atas ialah kandungan terperinci Mengapa Fungsi Rekursif Saya Kadangkala Tiada Kembali?. 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