Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Fungsi Python Rekursif Saya Tidak Kembali Apabila Cuba Mencari Laluan?

Mengapa Fungsi Python Rekursif Saya Tidak Kembali Apabila Cuba Mencari Laluan?

Linda Hamilton
Linda Hamiltonasal
2024-11-22 16:56:26632semak imbas

Why Does My Recursive Python Function Return None When Trying to Find a Path?

Mengembalikan Laluan Secara Rekursif dalam Python

Dalam Python, anda telah menghadapi masalah semasa cuba mengembalikan laluan daripada fungsi rekursif. Sebaliknya, anda memperoleh Tiada dalam hasilnya.

Kod yang disediakan bertujuan untuk melintasi kamus yang mewakili struktur sistem fail, mencari fail yang ditentukan oleh rqfile. Laluan ke fail itu harus dikembalikan jika ditemui.

Punca isu ialah semasa mengulangi kamus, fungsi cuba mengembalikan Tiada dalam cawangan lain apabila ia menemui nilai bukan kamus. Ini menamatkan fungsi secara pramatang, menyebabkan Tiada yang dikembalikan.

Untuk membetulkannya, anda perlu secara konsisten mengembalikan hasil panggilan rekursif:

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:
        # Remove unnecessary else block
        return get_path(directory[filename], rqfile, path)

Kod ini menjamin bahawa fungsi itu kembali laluan jika ia ditemui atau hasil panggilan rekursif jika laluan semasa bukan yang anda cari. Sebagai alternatif, anda juga boleh mengendalikan kes tepi di mana rqfile tidak hadir dalam laluan semasa:

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:
            return None
    return get_path(directory[filename], rqfile, path)

Dengan melaksanakan salah satu daripada penyelesaian ini, fungsi anda akan mengembalikan laluan ke fail yang diminta dengan betul atau Tiada jika ia tidak ditemui.

Atas ialah kandungan terperinci Mengapa Fungsi Python Rekursif Saya Tidak Kembali Apabila Cuba Mencari Laluan?. 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