Fungsi Rekursif Tidak Mengembalikan: Masalah dan Penyelesaian
Masalah:
Fungsi rekursif direka bentuk untuk mengesahkan input pengguna dan mengembalikan "a" atau "b" tanpa diduga mengembalikan Tiada apabila input yang salah disediakan dan kemudian diperbetulkan.
Kod Fungsi:
def get_input(): my_var = input('Enter "a" or "b": ') if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') get_input() else: return my_var
Gelagat Yang Dijangka:
Apabila pengguna memasukkan input yang sah ("a" atau "b"), fungsi harus mengembalikan nilai my_var.
Gelagat Sebenar:
Apabila pengguna memasukkan input tidak sah dan kemudian memasukkan "a" atau "b", fungsi mengembalikan Tiada dan bukannya nilai input yang sah .
Sebab:
Dalam rekursif panggil dalam pernyataan if:
get_input()
Nilai pulangan panggilan rekursif tidak dikembalikan oleh fungsi. Sebaliknya, fungsi itu jatuh pada penghujungnya tanpa mengembalikan apa-apa secara eksplisit. Dalam Python, kehilangan penghujung fungsi secara tersirat mengembalikan Tiada.
Penyelesaian:
Untuk menyelesaikan isu ini, kembalikan nilai pulangan panggilan rekursif dalam pernyataan if:
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
Ini memastikan bahawa apabila input tidak sah disediakan dan diperbetulkan, fungsi mengembalikan nilai dengan betul my_var, seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Fungsi Pengesahan Input Rekursif Saya Tidak Kembali Daripada 'a' atau 'b'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!