Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Fungsi Rekursif Saya Mengembalikan `Tiada` dalam Python?

Mengapa Fungsi Rekursif Saya Mengembalikan `Tiada` dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-11-24 12:16:24137semak imbas

Why Does My Recursive Function Return `None` in Python?

Fungsi Rekursif Mengembalikan Tiada dalam Python Selesai

Apabila cuba mengembalikan laluan dalam fungsi rekursif, isu boleh timbul apabila "Tiada" dikembalikan sebaliknya. Ini boleh diselesaikan dengan memastikan bahawa hasil rekursif dikembalikan. Berikut ialah penjelasan tentang sebab dan cara membetulkannya:

Dalam kod yang disediakan:

def get_path(dictionary, rqfile, prefix=[]):
    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))
        else:
            get_path(directory[filename], rqfile, path)

Panggilan rekursif berakhir dengan get_path(direktori[nama fail], rqfile, laluan) tanpa pemulangan . Ini bermakna jika rqfile tiada dalam str(os.path.join(*path)), fungsi itu tamat tanpa memulangkan apa-apa secara eksplisit, menghasilkan nilai pulangan lalai None.

Untuk membetulkannya, rekursif keputusan harus dikembalikan seperti itu:

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

Dengan sentiasa kembali pada penghujung fungsi, sama ada panggilan rekursif atau tidak, kami memastikan bahawa pulangan diberikan secara eksplisit, menghalang "Tiada" daripada dikembalikan.

Perhatikan bahawa yang lain selepas jika bukan isinstance(kamus[nama fail], dict): cawangan boleh dialih keluar, kerana fungsi itu sepatutnya kembali dalam kedua-dua kes: apabila rqfile berada dalam laluan dan apabila tidak, dan tidak perlu cawangan lain untuk menamatkan fungsi itu dengan mudah.

Atas ialah kandungan terperinci Mengapa Fungsi Rekursif Saya Mengembalikan `Tiada` dalam Python?. 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