Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi Sawa Rekursif Saya Mengembalikan Kadangkala `Tiada`?
Memahami Rekursi dan Mengapa Ia Tiada Kembali
Apabila fungsi memanggil dirinya sendiri, ia dikenali sebagai rekursi. Ini boleh menjadi teknik yang berkuasa, tetapi penting untuk memahami konsep nilai pulangan untuk mengelakkan daripada menemui hasil yang tidak dijangka.
Dalam kod Python yang diberikan:
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 print('got input:', get_input())
Jika pengguna memasukkan "a " atau "b", fungsi berfungsi seperti yang dimaksudkan dan mengembalikan input. Walau bagaimanapun, isu timbul apabila pengguna memasukkan aksara tidak sah dan kemudian input yang sah. Masalahnya berpunca daripada panggilan rekursif dalam keadaan if.
Apabila my_var bukan "a" atau "b", fungsi tersebut dengan betul menggesa pengguna untuk mencuba lagi. Walau bagaimanapun, panggilan rekursif untuk get_input() tidak mempunyai pernyataan pulangan untuk nilai pulangan fungsi rekursif. Tanpa pemulangan yang betul, Python secara tersirat mengembalikan Tiada apabila fungsi itu jatuh pada penghujungnya.
Untuk membetulkannya, panggilan rekursif harus diubah suai untuk mengembalikan hasil fungsi rekursif:
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
Dengan perubahan ini, fungsi akan mengembalikan my_var dengan betul selepas pengguna memberikan input yang sah, menghalang pengembalian Tiada.
Atas ialah kandungan terperinci Mengapa Fungsi Sawa Rekursif Saya Mengembalikan Kadangkala `Tiada`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!