Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Fungsi Python Rekursif Saya Tidak Kembali Daripada Laluan yang Dijangkakan?

Mengapa Fungsi Python Rekursif Saya Tidak Kembali Daripada Laluan yang Dijangkakan?

Susan Sarandon
Lepaskan: 2024-11-14 21:22:02
asal
775 orang telah melayarinya

Why Does My Recursive Python Function Return None Instead of the Expected Path?

Fungsi Rekursif dan Tiada Mengembalikan dalam Python [Pendua]

Dalam Python, fungsi rekursif boleh menjadi alat yang berkesan untuk menyelesaikan masalah yang kompleks. Walau bagaimanapun, adalah penting untuk memahami mekanisme rekursi untuk mengelakkan hasil yang tidak dijangka.

Pertimbangkan coretan kod berikut:

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)
Salin selepas log masuk

Fungsi ini bertujuan untuk mengembalikan laluan kepada fail tertentu dalam bersarang kamus. Walau bagaimanapun, apabila dilaksanakan, isu timbul bahawa ia mengembalikan Tiada dan bukannya laluan yang dijangkakan.

Masalahnya terletak pada pengendalian panggilan rekursif. Untuk melaksanakan rekursif dengan betul, hasil panggilan rekursif perlu dikembalikan kepada fungsi panggilan. Dalam kes ini, ia harus dilakukan dalam blok else:

else:
    return get_path(directory[filename], rqfile, path)
Salin selepas log masuk

Ini memastikan bahawa fungsi menyebarkan hasil kembali ke rantai rekursif, akhirnya mengembalikan laluan kepada pemanggil.

Sebagai alternatif, mengalih keluar blok else dan sentiasa kembali pada penghujung gelung untuk juga boleh menyelesaikan isu:

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)
Salin selepas log masuk

Dengan mengembalikan hasil rekursif secara konsisten, fungsi kini boleh mendapatkan semula dan mengembalikan laluan ke fail yang dikehendaki.

Atas ialah kandungan terperinci Mengapa Fungsi Python Rekursif Saya Tidak Kembali Daripada Laluan yang Dijangkakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan