Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Fungsi Sawa Rekursif Saya Tidak Kembali?

Mengapa Fungsi Sawa Rekursif Saya Tidak Kembali?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 14:28:02743semak imbas

Why Does My Recursive Python Function Return None?

Fungsi Rekursif Mengembalikan Tiada dalam Python: Menangani Isu

Dalam senario tertentu apabila menggunakan fungsi rekursif dalam Python, adalah mungkin untuk menghadapi situasi di mana fungsi mengembalikan Tiada dan bukannya nilai yang dikehendaki. Isu ini lazimnya timbul apabila fungsi bertujuan untuk mengembalikan laluan tertentu, tetapi hasil sebenar yang diperoleh ialah Tiada.

Satu punca yang berpotensi untuk masalah ini ialah peninggalan pernyataan pemulangan selepas panggilan rekursif. Untuk menyelesaikan masalah ini, fungsi harus secara eksplisit mengembalikan hasil panggilan rekursif. Mengubah suai kod untuk memasukkan pernyataan pulangan akan memastikan bahawa fungsi mengembalikan laluan yang diperlukan:

else:
    return get_path(directory[filename], rqfile, path)

Selain itu, adalah dinasihatkan untuk memasukkan pernyataan pulangan secara konsisten pada penghujung fungsi, tanpa mengira hasil daripada panggilan rekursif. Amalan ini memastikan bahawa fungsi akan sentiasa mengembalikan nilai, mengelakkan kemungkinan mengembalikan Tiada secara tersilap:

for filename in dictionary.keys():
    path = prefix+[filename]
    if not isinstance(dictionary[filename], dict):
        if rqfile in str(os.path.join(*path)):
            return str(os.path.join(*path))

    return get_path(directory[filename], rqfile, path)

Dengan melaksanakan pelarasan yang dicadangkan ini, fungsi rekursif akan mengembalikan laluan yang dimaksudkan dan bukannya Tiada, menyelesaikan isu dihadapi.

Atas ialah kandungan terperinci Mengapa Fungsi Sawa Rekursif Saya Tidak 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