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!